繁体   English   中英

Terraform:将地图列表转换为修改后的地图列表

[英]Terraform: Convert a list of maps into a revised list of maps

我的输入是:

input = [
  {
    x = "X1"
    y = "Y1"
  },
  {
    x = "X2"
    y = "Y2"
  },
  {
    x = "X3"
    y = "Y3"
  },
]

我想要的 output 是:

output = [
  {
    val         = "X1",
    description = "This is a value of X"
  },
  {
    val         = "Y1",
    description = "This is a value of Y"
  },
  {
    val         = "X2",
    description = "This is a value of X"
  },
  {
    val         = "Y2",
    description = "This is a value of Y"
  },
  {
    val         = "X3",
    description = "This is a value of X"
  },
  {
    val         = "Y3",
    description = "This is a value of Y"
  },
]

如何在 Terraform 中实现这一点?

为此,我能够在 terraform 中使用flatten() function :

flatten([
  for a_map in var.input : [
    { val = a_map.x, description = "This is a value of X" },
    { val = a_map.y, description = "This is a value of Y" },
  ]
])

这种方法的一个优点是它将保持值的顺序。

所以 output 将是:

[
  {
    "description" = "This is a value of X"
    "val" = "X1"
  },
  {
    "description" = "This is a value of Y"
    "val" = "Y1"
  },
  {
    "description" = "This is a value of X"
    "val" = "X2"
  },
  {
    "description" = "This is a value of Y"
    "val" = "Y2"
  },
  {
    "description" = "This is a value of X"
    "val" = "X3"
  },
  {
    "description" = "This is a value of Y"
    "val" = "Y3"
  },
]

下面产生这样的 output:



variable "input" {

  default = [
    {
      x = "X1"
      y = "Y1"
    },
    {
      x = "X2"
      y = "Y2"
    },
    {
      x = "X3"
      y = "Y3"
    },
  ]

}



locals  {
  part1 = [for v in var.input:
      {
        "val" = v.x,
        "description" = "This is a value of X"
      }]
      
  part2 = [for v in var.input:
      {
        "val" = v.y,
        "description" = "This is a value of Y"
      }]      
}



output "output" {

  value = concat(local.part1, local.part2)

}

我的测试中的 output:

utput = [
  {
    "description" = "This is a value of X"
    "val" = "X1"
  },
  {
    "description" = "This is a value of X"
    "val" = "X2"
  },
  {
    "description" = "This is a value of X"
    "val" = "X3"
  },
  {
    "description" = "This is a value of Y"
    "val" = "Y1"
  },
  {
    "description" = "This is a value of Y"
    "val" = "Y2"
  },
  {
    "description" = "This is a value of Y"
    "val" = "Y3"
  },
]

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM