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

Dot*_*tan 5 terraform

我有一个地形列表

a = [1,2,3,4]
Run Code Online (Sandbox Code Playgroud)

有没有办法让我*2在列表上应用一个函数(例如),以获得

b = [2,4,6,8]
Run Code Online (Sandbox Code Playgroud)

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

variable "b" {
   count = "${length(a)}"
   value = "${element(a, count.index)} * 2
}
Run Code Online (Sandbox Code Playgroud)

据我所知,不存在这样的事情。我错过了什么吗?

Cla*_*ney 7

根据@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}"
}
Run Code Online (Sandbox Code Playgroud)

输出:

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


Row*_*obs 4

目前这是一个悬而未决的问题最近发布了Terraform 的新版本,除了许多其他 HCL 改进之外,它应该能够做到这一点。

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