Terraform For循环从地图生成JSON

时间:2020-08-19 10:10:02

标签: terraform

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

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

到以下类型的输出

[{
  "name": "ENV",
  "value": "dev"
},
{
  "name": "CONTAINER_TAG",
  "value": "dev"
}
]

1 个答案:

答案 0 :(得分:3)

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

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

output "test" {
  value = [for k,v in local.container_envs: { name = k, value = v }]
}

给出:

test = [
  {
    "name" = "CONTAINER_TAG"
    "value" = "dev"
  },
  {
    "name" = "ENV"
    "value" = "dev"
  },
]