我需要在 Terraform (v0.10.8) 中定义一个资源,该资源具有一个列表属性,该属性可能为空也可能不为空,具体取决于变量,请参阅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}"
[...]
}
}
但是,在列表应该为空的情况下(即,var.volume_size
is 0):
volume_ids = [
"${var.volume_size != 0 ? element(digitalocean_volume.worker.*.id, count.index) : ""}"
]
生成以下 Terraform 错误消息:
* 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) : ""}
我应该如何正确写出我的定义volume_ids
?
不幸的是,这是 terraform 中的许多语言缺陷之一。一个巧妙的解决方法是将一个空列表添加到您的空列表中。
${var.volume_size != 0 ? element(concat(digitalocean_volume.worker.*.id , list("")), count.index) : ""}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)