如何根据变量定义Terraform中可能为空的列表?

时间:2017-11-21 12:11:11

标签: terraform

我需要在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) : ""} 的定义?

1 个答案:

答案 0 :(得分:7)

不幸的是,这是terraform中许多语言缺陷之一。 hacky解决方法是将空列表添加到空列表中。

${var.volume_size != 0 ? element(concat(digitalocean_volume.worker.*.id , list("")), count.index) : ""}