Terraform For 循环从地图生成 JSON

Mat*_*mes 3 terraform

在 terraform 中寻找创建 JSON 字符串(最好使用 jsonencode)或类似内容的最简单方法,我查看了 terraform 文档上的几个示例,但仍在努力确定准确的格式以使输出正确。这应该可以很容易地将我们在 docker-compose 中使用的 dev.env 文件很好地传输到我们的几个容器中使用的这个大数组中。

locals {
  container_envs = {
    ENV = "dev"
    CONTAINER_TAG = "dev"
  }
}
Run Code Online (Sandbox Code Playgroud)

到以下类型的输出

[{
  "name": "ENV",
  "value": "dev"
},
{
  "name": "CONTAINER_TAG",
  "value": "dev"
}
]
Run Code Online (Sandbox Code Playgroud)

Mar*_*cin 6

我认为以下应该有效(不确定顺序是否重要):

locals {
  container_envs = {
    ENV = "dev"
    CONTAINER_TAG = "dev"
  }
}

output "test" {
  value = [for k,v in local.container_envs: { name = k, value = v }]
}
Run Code Online (Sandbox Code Playgroud)

这使:

test = [
  {
    "name" = "CONTAINER_TAG"
    "value" = "dev"
  },
  {
    "name" = "ENV"
    "value" = "dev"
  },
]
Run Code Online (Sandbox Code Playgroud)