【发布时间】:2019-11-16 04:30:07
【问题描述】:
刚接触 terraform。使用 terraform 0.12。 我正在尝试改造我们的 Cloudflare 设置。
需要创建多个相同类型的资源(cloudflare 提供者 page_rule 资源)并使用 config.tfvars 将值传递给资源“模板”。
我已经声明了一个 list(object({...})) 类型的变量。
需要一些对象参数是可选的,因此如果在 config.tfvars 中没有为某些列表元素指定条目,则在没有它们的情况下创建资源。
我已经阅读了 terraform 的 0.12 null 默认变量值,但我不确定是否有办法为 terraform 对象参数指定默认值。我见过的所有例子都只指定了参数的类型。
代码示例:
变量.tf
variable "example_page_rule"{
type = list(object({
cache_level = string,
ssl = string,
target = string
}))
}
main.tf
resource "cloudflare_page_rule" "page_rule" {
count = length(var.example_page_rule)
cache_level = var.example_page_rule[count.index].cache_level
ssl = var.example_page_rule[count.index].ssl
target = var.example_page_rule[count.index].target
}
config.tfvars
page_rules = [
{
target = "www.target-url.com",
ssl = "flexible",
cache_level = "simplified",
},
{
target = "www.target-url.com",
cache_level = "simplified"
}
]
当尝试使用上述配置进行规划时出现错误:“ssl”值是必需的。
如果我将 config.tfvars 更改为以下内容,一切都会按预期工作 config.tfvars,但如果可能的话,我想避免输入空值。
page_rules = [
{
target = "www.target-url.com",
ssl = "flexible",
cache_level = "simplified",
},
{
target = "www.target-url.com",
ssl = null,
cache_level = "simplified"
}
]
【问题讨论】:
标签: terraform