Terraformでも複数条件の三項演算子は使える
やりたかったこと
AWSのオートスケーリンググループで条件によってオートスケーリングサイズを変更したかった。
- 条件1・条件2が両方trueならサイズを0
- 条件1がtrueならサイズを2倍
- それ以外はデフォルト値
実際やったコード
local {
test_min = 2
}
variable "ALLDOWN" {
default = ""
}
variable "TEST" {
default = ""
}
resource "aws_autoscaling_group" "test" {
min_size = var.TEST == "test" ? var.ALLDOWN == "alldown" ? 0 : local.test_min * 2 : local.test_min
~~~ 略 ~~~
}
上記のterraformのコードをapply済みとする。
条件1・条件2が両方true
terraform plan -target=aws_autoscaling_group.test -var TEST="test" -var ALLDOWN="alldown"
~ min_size = 2 -> 0
条件1がtrue
terraform plan -target=aws_autoscaling_group.test -var TEST="test"
~ min_size = 2 -> 4
それ以外
terraform plan -target=aws_autoscaling_group.test
No changes. Infrastructure is up-to-date.
解説
条件1 ? 条件2 ? "A" : "B" : "C"
このような式があった場合、どうなるかというと以下のようになるためである。
条件1 | 条件2 | 結果 |
---|---|---|
true | true | A |
true | false | B |
false | false | C |
false | true | C |