![](/img/trans.png)
[英]How to pass a list of string or strings to data template in terragrunt / 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.