Terraform-如何连接嵌套列表的元素?

时间:2019-07-10 18:18:24

标签: list terraform

我有两个列表-["l","h"]["a","b"],因此,我需要创建一个列表,例如:["la", "lb", "ha", "hb"]-可以吗?

我尝试使用setproduct()flatten()join(),但是我能找到的最接近的东西是这样的:

> setproduct(["l","h"], ["a","b"])
[
  [
    "l",
    "a",
  ],
  [
    "l",
    "b",
  ],
  [
    "h",
    "a",
  ],
  [
    "h",
    "b",
  ],
]
#
> flatten(setproduct(["l","h"], ["a","b"]))
[
  "l",
  "a",
  "l",
  "b",
  "h",
  "a",
  "h",
  "b",
]

我也可以加入一个元素:

> join("",setproduct(["l","h"], ["a","b"])[1])
lb 

,但尚未弄清楚如何从中获得["la", "lb", "ha", "hb"]。任何人有帮助吗?

-S

2 个答案:

答案 0 :(得分:1)

使用块列表,flattern,join和for循环,

> [for test in chunklist(flatten(setproduct(["l","h"], ["a","b"])), 2): join("", test)]
[
  "la",
  "lb",
  "ha",
  "hb",
]

答案 1 :(得分:0)

执行此操作的一种更简单的方法是两个嵌套的表达式:

在控制台中:

> flatten([for i in ["l","h"]: [for j in ["a","b"]: "${i}${j}"]])
[
  "la",
  "lb",
  "ha",
  "hb",
]

在HCL中:

output "flat" {
  value = flatten([
    for i in ["l","h"]: [
      for j in ["a","b"]: "${i}${j}"
    ]])
}

输出:

Outputs:

flat = [
  "la",
  "lb",
  "ha",
  "hb",
]