既存のVPCをterraformで扱う方法について考えました。
既存のVPCの情報をインポートしてterraform管理下に置く方法は、たくさん見つかりましたがVPCを扱う権限がなかったり、管理されたVPCを使うだけというケースでは、dataを使うのが良さそうです。
使い方
variable.tfとdata.tfとoutput.tfというファイルを使います。
data.tfに次のように定義します。
locals {
vpc_id = var.vpc_id
}
data "aws_vpc" "target_vpc" {
id = local.vpc_id
}
data "aws_subnet_ids" "subnet_ids" {
vpc_id = local.vpc_id
}
data "aws_subnet" "target_subnet" {
for_each = data.aws_subnet_ids.subnet_ids.ids
id = each.value
}
入力となるvariable.tfは、次のように定義します。
vpc-*****には、リソースを作成するVPC IDをハードコードするか、オプションやファイルから渡します。
variable "vpc_id" {
default = "vpc-*****"
}
variable "region" {
default = "ap-northeast-1"
}
output.tfで下記のように定義します。
output "vpc" {
value = data.aws_vpc.target_vpc.id
}
output "subnets" {
value = [for s in data.aws_subnet.target_subnet : s.id]
}
provider.tfは、下記のように定義して、接続情報を適宜設定します。
provider "aws" {
region = var.region
version = "= 2.58.0"
}
あとは、下記のコマンドで、情報を収集して表示します。
terraform init terraform apply terraform output
以上
コメント