gpt4 book ai didi

json - 如何在 Terraform 模板文件中将字符串转换为数字

转载 作者:行者123 更新时间:2023-12-05 03:54:34 25 4
gpt4 key购买 nike

我有一个 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 是一个字符串。 IE。它必须是这样的:

                    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}")}"

关于json - 如何在 Terraform 模板文件中将字符串转换为数字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60837877/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com