我需要在Terraform(v0.10.8)中定义一个具有list属性的资源,该属性根据变量可能为空,也可能不为空,请参阅以下定义中的TypeError: unsupported operand type(s) for +: 'int' and 'list'
:
volume_ids
}
我提出的解决方案失败但是在列表应为空(即resource "digitalocean_droplet" "worker_node" {
count = "${var.droplet_count}"
[...]
volume_ids = [
"${var.volume_size != 0 ? element(digitalocean_volume.worker.*.id, count.index) : ""}"
]
}
resource "digitalocean_volume" "worker" {
count = "${var.volume_size != 0 ? var.droplet_count : 0}"
[...]
}
为0)的情况下:
var.volume_size
生成以下Terraform错误消息:
volume_ids = [
"${var.volume_size != 0 ? element(digitalocean_volume.worker.*.id, count.index) : ""}"
]
我应该如何正确地写出* module.workers.digitalocean_droplet.worker_node[1]: element: element() may not be used with an empty list in:
${var.volume_size != 0 ? element(digitalocean_volume.worker.*.id, count.index) : ""}
的定义?
答案 0 :(得分:7)
不幸的是,这是terraform中许多语言缺陷之一。 hacky解决方法是将空列表添加到空列表中。
${var.volume_size != 0 ? element(concat(digitalocean_volume.worker.*.id , list("")), count.index) : ""}