Ваша первоначальная идея не будет работать, потому что если var.whatever
является списком, то он также не может быть строкой (то есть = "true" ).
Однако хорошая новость заключается в том, что внутри общего троичного оператора можно использовать интерполяции.
Таким образом, вы можете получить что-то вроде:
count = "${var.bool == "true" ? length(var.whatever) : 0}"
Хорошийспособ проверить интерполяции перед тем, как поместить их в ваш окончательный код, - использовать консоль Terraform console (т. е. terraform console
).
Настройте переменные в файлескажем console.tf
в каталоге без какого-либо другого кода TF.
variable "whatever" {
type = "list"
default = ["1", "2", "foo", "bar" ]
}
variable "bool" {
default = "true"
}
Теперь из командной строки запустите terraform console
.
$ terraform console
> var.whatever
[
"1",
"2",
"foo",
"bar",
]
> length(var.whatever)
4
> "${var.bool == "true" ? length(var.whatever) : 0}"
4
> exit
$
Вы можете видеть, что Terraform выполняет интерполяции, а затем запускает троичный оператор для этих оцененных значений.