Uncategorizedソフトウェア

既存のVPCをterraformで扱う方法について考えました。

既存のVPCの情報をインポートしてterraform管理下に置く方法は、たくさん見つかりましたがVPCを扱う権限がなかったり、管理されたVPCを使うだけというケースでは、dataを使うのが良さそうです。

使い方

variable.tfdata.tfoutput.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

以上

コメント

タイトルとURLをコピーしました