簡體   English   中英

如何在 terraform 模板文件中將字符串轉換為數字

[英]How to convert string to number in terraform template file

我有一個 terraform 模板文件source.tpl - 它是一個 json,它必須是 JSON,因為它是由 python json 庫生成的。 該文件具有以下條目

[
    {
        "data": {
            "address": "${NETWORK}",
            "netmask": "${NETMASK}",
        }
    }
]

在我的 tf 模塊中,我渲染了這個模板:

data "template_file" "source" {
  template = "${file("${path.module}/source.tpl")}"
  vars = {
    NETWORK = element(split("/", "${var.cidr}"),0)
    NETMASK = tonumber(element(split("/", "${var.cidr}"),1))
  }
}

其中 cidr 是一個字符串 - 類似於10.1.1.0/24

在渲染的輸出中,我需要 NETMASK 是一個數字,而 NETWORK 是一個字符串。 即它必須是這樣的:

                    data        = {
                        address   = "10.1.1.0"
                        netmask   = 24
                    }

但我得到:

                    data        = {
                        address   = "10.1.1.0"
                        netmask   = "24"
                    }

即網絡掩碼是一個字符串。 我怎樣才能擺脫 terraform 中的那些引號? 初始 source.tpl 應該仍然有這些引號,因為如果我刪除它們 - 它會變成無效的 JSON。

我理解這里的問題,您正在使用 JSON 庫生成模板,該庫無法生成如下內容,因為它是無效的 JSON,盡管這是您想要的模板

[
    {
        "data": {
            "address": "${NETWORK}",
            "netmask": ${NETMASK}
        }
    }
]

我可以推薦一點預處理嗎? 例如

  template = "${replace(file("${path.module}/source.tpl"), "\"$${NETMASK}\"", "$${NETMASK}")}"

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM