【发布时间】:2020-07-05 08:26:21
【问题描述】:
我有一个 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。
【问题讨论】:
-
这是模板中的问题。将
"${NETMASK}"更改为${NETMASK}。 -
不幸的是,就像我提到的 - 初始 source.tpl 应该仍然有那些引号,因为如果我删除它们 - 它会变成无效的 JSON。
-
如果引号在模板中,它们将出现在呈现的输出中。 Terraform 不会为您删除它。
标签: json terraform terraform-template-file