terraform:对列表执行地图操作?

时间:2018-07-10 14:18:25

标签: terraform

我有一个地形列表

a = [1,2,3,4]

我是否可以在列表中应用函数(例如*2

b = [2,4,6,8]

我在寻找插值语法,也许是map(a, _*2),甚至是类似的

variable "b" {
   count = "${length(a)}"
   value = "${element(a, count.index)} * 2
}

据我所知,不存在这样的东西。我想念什么吗?

2 个答案:

答案 0 :(得分:1)

当前为open issue。最近宣布了new version of Terraform,除了其他许多HCL改进外,它应该可以执行此操作。

我认为,当前最好的选择是为列表的每个元素创建local values(请记住,您不能在变量的默认值中使用插值语法;存在局部变量可以解决此限制)。但是,我不确定本地人是否具有count属性。

答案 1 :(得分:0)

按照@Rowan Jacob的回答,现在可以在v0.12中使用新的for表达式了。

请参阅:https://www.terraform.io/docs/configuration/expressions.html#for-expressions

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

locals {
  b = [for x in var.a : x * 2]
}

output "local_b" {
  value = "${local.b}"
}

给予

  

输出:

     

local_b = [2,4,6,8,]