Use map of terraform
terraformで変数を条件によって使い分けたい場合、マップという仕組みを使うとうまく出来ることを知った。
例えば、awsでサブネットのCIDRを切りたい場合。
ap-northeast-1a
の場合は10.0.0.0/24
を、
ap-northeast-1c
の場合は10.0.1.0/24
としたい場合、以下のように変数をマップする。(って言い方で合ってるのかな?)
variables.tf
variable "subnets_cidr_block" {
description = "subnets cidr block"
default = {
ap-northeast-1a = "10.0.0.0/24"
ap-northeast-1c = "10.0.1.0/24"
}
}
main.tfでは以下のように呼び出す。
main.tf
resource "aws_subnet" "1a" {
vpc_id = "${aws_vpc.main.id}"
cidr_block = "${var.subnets_cidr_block.ap-northeast-1a}"
availability_zone = "ap-northeast-1a"
}
resource "aws_subnet" "1c" {
vpc_id = "${aws_vpc.main.id}"
cidr_block = "${var.subnets_cidr_block.ap-northeast-1c}"
availability_zone = "ap-northeast-1c"
}
結果
+ aws_subnet.1a
availability_zone: "" => "ap-northeast-1a"
cidr_block: "" => "10.0.0.0/24"
vpc_id: "" => "${aws_vpc.main.id}"
+ aws_subnet.1c
availability_zone: "" => "ap-northeast-1c"
cidr_block: "" => "10.0.1.0/24"
vpc_id: "" => "${aws_vpc.main.id}"
これは便利ですぞ!