【问题标题】:terraform: performing a map operation on a list?terraform:对列表执行地图操作?
【发布时间】:2019-07-04 22:59:11
【问题描述】:

我有一个地形列表

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
}

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

【问题讨论】:

    标签: terraform


    【解决方案1】:

    根据@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,]

    【讨论】:

      【解决方案2】:

      目前这是open issue。最近宣布了一个new version of Terraform,它应该能够做到这一点,以及许多其他 HCL 改进。

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-09-22
        • 1970-01-01
        • 2021-11-07
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多