Terraform可选的嵌套对象变量

时间:2019-07-05 14:13:56

标签: terraform

terraform的新手。使用terraform 0.12。 我正在尝试对Cloudflare设置进行地形设置。

需要创建多个相同类型的资源(cloudflare提供程序page_rule资源),然后使用config.tfvars将值传递到资源“模板”。

我已经声明了list(object({...}))类型的变量。

需要某些对象参数为可选,因此,如果未在config.tfvars中为某些列表元素指定条目,则创建资源时将不包含这些参数。

我已经了解了terraform的0.12空默认变量值,但是我不确定是否有办法为terraform对象参数指定默认值。我看到的所有示例仅指定参数的类型。

代码示例:

variables.tf

text

main.tf

variable "example_page_rule"{
      type = list(object({
            cache_level = string,
            ssl = string,
            target = string    
      }))   
}

config.tfvars

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
}

尝试使用上述配置进行计划时发生错误:“ ssl”值是必需的。

如果我将config.tfvars更改为以下内容,则所有工作均按预期进行 config.tfvars,但如果可能的话,我想避免输入空值。

page_rules = [
{
   target = "www.target-url.com",
   ssl = "flexible",
   cache_level = "simplified",
},

{
   target = "www.target-url.com",
   cache_level = "simplified"
}
]

1 个答案:

答案 0 :(得分:0)

这是一项功能请求,并在此处进行跟踪:https://github.com/hashicorp/terraform/issues/19898。请点击该链接,并在原始帖子上加上:+1 :(竖起表情符号),以便其开发团队对其进行优先排序。