terraformというかHCLでif文使いたい
基本的にはサポートされてない。 けど、こちらの方のやり方を参考にして、こんな風にすればできるっちゃできる。
If you set count to 1 on a resource, you get one copy of that resource and if you set count to 0, that resource is not created at all.
trueが1、falseが0になることを利用して、countを0または1にするっていうちょっとdirtyな感じ。
resource "aws_eip" "example" { count = "${var.create_eip}" instance = "${aws_instance.example.id}" } module "frontend" { source = "/modules/microservice" service_name = "frontend" ami = "ami-abcd1234" instance_type = "t2.medium" create_eip = true } module "backend" { source = "/modules/microservice" service_name = "backend" ami = "ami-efgh5678" instance_type = "m4.large" create_eip = false }
なるほどねー。でも、公式にのってないようなやり方はあんまりやりたくないタイプ。
追記
terraform 0.8から公式にsupportされました🎉
resource "aws_instance" "web" { subnet = "${var.env == "production" ? var.prod_subnet : var.dev_subnet}" }
CONDITION ? TRUEVAL : FALSEVAL