【问题标题】:Terraform - Specifying multiple possible values for VariablesTerraform - 为变量指定多个可能的值
【发布时间】:2019-06-12 18:01:20
【问题描述】:

CloudFormation 为参数提供 AllowedValues,它告诉参数的可能值可以来自此列表。如何使用 Terraform 变量实现这一点? list 的变量类型不提供此功能。因此,如果我希望我的变量仅具有两个可能值中的值,我如何使用 Terraform 实现这一点。我要复制的 CloudFormation 脚本是:

"ParameterName": {
        "Description": "desc",
        "Type": "String",
        "Default": true,
        "AllowedValues": [
            "true",
            "false"
        ]
   }

【问题讨论】:

    标签: amazon-web-services variables amazon-cloudformation terraform terraform-provider-aws


    【解决方案1】:

    我不知道官方的方式,但是in a Terraform issue描述了一个有趣的技术:

    variable "values_list" {
      description = "acceptable values"
      type = "list"
      default = ["true", "false"]
    }
    
    variable "somevar" {
    description = "must be true or false"
    }
    
    resource "null_resource" "is_variable_value_valid" {
      count = "${contains(var.values_list, var.somevar) == true ? 0 : 1}"
      "ERROR: The somevar value can only be: true or false" = true
    }
    

    更新:

    Terraform 现在在 Terraform 0.13 中提供 custom validation rules

    variable "somevar" {
      type = string
      description = "must be true or false"
    
      validation {
        condition     = can(regex("^(true|false)$", var.somevar))
        error_message = "Must be true or false."
      }
    }
    

    【讨论】:

    • 那么如果变量不在列表中,Terraform 会报错并停止进一步处理?如果变量在列表中,count 的值是否为零?当count为1时会抛出错误?
    猜你喜欢
    • 2016-04-18
    • 1970-01-01
    • 2021-06-11
    • 1970-01-01
    • 2021-07-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-10-03
    相关资源
    最近更新 更多