Json 如何在地形模板文件中将字符串转换为数字
我有一个terraform模板文件Json 如何在地形模板文件中将字符串转换为数字,json,terraform,terraform-template-file,Json,Terraform,Terraform Template File,我有一个terraform模板文件source.tpl——它是json,必须是json,因为它是由python json库生成的。此文件具有以下条目 [ { "data": { "address": "${NETWORK}", "netmask": "${NETMASK}", } } ] 在我的tf模块中,我呈现此模板: data "template_file" "source" { templ
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
在渲染输出中,我需要网络掩码为数字,网络为字符串。也就是说,它必须类似于:
data = {
address = "10.1.1.0"
netmask = 24
}
但我得到了:
data = {
address = "10.1.1.0"
netmask = "24"
}
即,网络掩码是一个字符串。我怎样才能去掉terraform中的那些引用?Initial source.tpl应该仍然有这些引号,因为如果我删除它们,它将成为无效的JSON。我理解这里的问题,您正在使用一个JSON库生成模板,该库无法生成以下内容,因为它是无效的JSON,尽管这是您想要的模板
[
{
"data": {
"address": "${NETWORK}",
"netmask": ${NETMASK}
}
}
]
我可以推荐一点预处理吗?比如说
template = "${replace(file("${path.module}/source.tpl"), "\"$${NETMASK}\"", "$${NETMASK}")}"
这是模板中的一个问题。将
“${NETMASK}”
更改为${NETMASK}
。不幸的是,正如我所提到的-Initial source.tpl应该仍然有这些引号,因为如果我删除它们,它将成为无效的JSON。如果引号在模板中,它们将出现在呈现的输出中。Terraform不会为你移除它。非常感谢-这就是我一直在寻找的!