既存の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
以上
コメント