🪐
TerraformのModule間で値をやり取りする
前置き
TerraformのModuleを複数使用する場合、Module間での値の受け渡しにはoutput
を用いる必要があります。
今回はEC2を題材に練習してみました。
リポジトリ
コードは以下です。
説明
EC2で使用するパラメータ
-
VPCID
- セキュリティグループのため
-
SubnetID
- EC2のため
-
IAMロール名
- インスタンスプロファイルのため
これらをEC2モジュールで使用するために、network、IAMモジュールでoutputします。
output
以下のように必要な情報をoutputします
network/output.tf
output "VPCID" {
value = aws_vpc.vpc.id
}
output "public1ID" {
value = aws_subnet.public1.id
}
IAM/output.tf
output "iam_role" {
value = aws_iam_role.test_role.name
}
outputを受け取る
outputした情報をmodule
ブロックで受け取ります。
今回はEC2のモジュールを使う際に受け取っています。
main.tf
module "ec2" {
source = "./modules/ec2"
vpcid = module.network.VPCID
role_name = module.IAM.iam_role
subnet = module.network.public1ID
}
あとは設定した変数を使うだけです。
参考
Discussion