如何在Terraform中向列表添加元素?

40

我有些代码是这个通用形式:

variable "foo" {
  type = "list"
  default = [ 1,2,3 ]
}

resource "bar_type" "bar" {
  bar_field = "${var.foo}"
}

我想在不修改foo的情况下向bar_field追加一个附加值。 我该怎么做? 我在文档中没有看到任何类型的连接或追加函数。

这是 0.11.x 版本的 Terraform.

3个回答

68
你可以使用 concat 函数来实现这个功能。扩展你问题中的示例:
variable "foo" {
  type = "list"
  default = [ 1,2,3 ]
}

# assume a value of 4 of type number is the additional value to be appended
resource "bar_type" "bar" {
  bar_field = "${concat(var.foo, [4])}"
}

将值附加到bar_field分配的值,同时确保var.foo保持不变。


5

如果列表中不存在某个项,添加新的项:

locals {

  oldlist = ["a", "b", "c"]
  newitem = "d"

  newlist = (contains(local.oldlist, local.newitem) == false ? concat(local.oldlist, [local.newitem]) : local.oldlist)

}

output "newlist" {
  value = local.newlist
}


1
通常情况下,您不会测试布尔值(在任何编程语言中),即 contains(local.oldlist, local.newitem) ? local.oldlist : concat(local.oldlist, [local.newitem]) - Darren Bishop

3
var1 = ["string1","string2"]

var2 = "string3"

var3 = concat(var1, formatlist(var2))

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接