В Terraform v0.11 условный оператор работает только со значениями примитивного типа (строки, числа, логические значения).Вы можете обойти это, создав карту с двумя вариантами, а затем условно выбрав ключ, в отличие от условного выбора значения:
locals {
lists = {
a = "${list("aaa")}"
b = "${list("bbb")}"
}
}
output "chosen" {
value = "${local.lists[local.server == "ubuntu" ? "a" : "b"]}"
}
В грядущей (на момент написания) версии Terraform v0.В выпуске условный оператор работает со значениями любого типа, при условии, что и выражения true, и false могут быть преобразованы в один и тот же тип во время проверки типа, поэтому ваш оригинальный пример будет работать, но его можно переписать с использованием синтаксиса выражений первого класса.также введено v0.12:
locals {
server = "ubuntu"
list_a = ["aaa"]
list_b = ["bbb"]
chosen = local.server == "ubuntu" ? local.list_a : local.list_b
}
output "chosen" {
value = local.chosen
}