【问题标题】:how do I convert a Terraform map variable into a string?如何将 Terraform 地图变量转换为字符串?
【发布时间】:2021-12-09 08:57:57
【问题描述】:

我正在制定一个 tf 计划,它构建了一个 json 模板和一个映射变量,我不太确定如何使用现有的循环、类型、列表函数来完成这项工作。我知道我不能将列表或映射传递给数据“template_file”,所以我的想法是在本地或空资源块中构建字符串,然后将其传递给模板

变量

  variable "boostrap_servers" {
    type = map
    default = {
      "env01" : [
        "k01.env01",
        "k02.env01"
      ],
      "env02" : [
        "k01.env02"
      ]
  }

所需文字

    "connections": {
      "env01": {
        "properties": {
          "bootstrap.servers": "k01.env01,k02.env01"
        }
      },
      "env02": {
        "properties": {
          "bootstrap.servers": "k01.env02"
        }
      },      

【问题讨论】:

    标签: terraform terraform-template-file


    【解决方案1】:

    好的,所以下面的工作,但有一个更好的问题:为什么不直接使用 jsonencode 函数来构建 json

    locals {
      clusters = [
        for cluster, servers in var.boostrap_servers :
      "{\"${cluster}\":{\"properties\":{\"bootstrap.servers\":\"${join(" ,", servers)}\"}}"]
      connections = join(",", local.clusters)
    }
    

    【讨论】:

      【解决方案2】:

      您可以简单地使用jsonencode 函数和列表推导:

      locals {
        connections = jsonencode({
          for cluster, servers in local.bootstrap_servers :
          cluster => {
            properties = {
              "bootstrap.servers" = join(",", servers)
            }
          }
        })
      }
      

      【讨论】:

        猜你喜欢
        • 2021-07-20
        • 2021-01-24
        • 1970-01-01
        • 2020-01-09
        • 2021-12-02
        • 1970-01-01
        • 2018-07-04
        • 1970-01-01
        相关资源
        最近更新 更多