我将Terraform与AWS用作提供程序。
我想在可用区局部变量中使用ternary operator。
逻辑很简单:
如果存在变量,请接受。
如果不是,请使用可用区data
。
以下代码:
data "aws_availability_zones" "available" {}
locals {
azs = "${length(var.azs) > 0 ? var.azs : data.aws_availability_zones.available.names}"
}
variable "azs" {
description = "A list of Availability zones in the region"
default = []
type = "list"
}
产生以下错误:
条件运算符不能与列表值一起使用。
尽管它很安静,但操作很简单,但结果却像familiar issue。
我遵循了上述线程中的变通方法,但是它们看上去很安静(将compact
split
和join
函数一起使用)。
对于更简单的解决方案有什么建议吗?
谢谢。
答案 0 :(得分:1)
您已接近答案。
不确定如何定义变量var.azs
,我想它们已定义为字符串并以逗号连接。
因此,您需要调整代码join到字符串的列表。
locals {
azs = "${length(var.azs) > 0 ? var.azs : join(",", data.aws_availability_zones.available.names)}"
}