gpt4 book ai didi

terraform - 如何在Terraform中定义一个列表,该列表根据变量可能为空?

转载 作者:行者123 更新时间:2023-12-04 14:39:16 25 4
gpt4 key购买 nike

我需要在Terraform(v0.10.8)中定义一个资源,该资源的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}"
[...]
}

}

但是,在列表应该为空的情况下(即 var.volume_size为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) : ""}

关于terraform - 如何在Terraform中定义一个列表,该列表根据变量可能为空?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47412837/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com