Terraform - 为变量指定多个可能的值
Posted
技术标签:
【中文标题】Terraform - 为变量指定多个可能的值【英文标题】:Terraform - Specifying multiple possible values for Variables 【发布时间】:2019-06-12 18:01:20 【问题描述】:CloudFormation 为参数提供 AllowedValues,它告诉参数的可能值可以来自此列表。如何使用 Terraform 变量实现这一点? list 的变量类型不提供此功能。因此,如果我希望我的变量仅具有两个可能值中的值,我如何使用 Terraform 实现这一点。我要复制的 CloudFormation 脚本是:
"ParameterName":
"Description": "desc",
"Type": "String",
"Default": true,
"AllowedValues": [
"true",
"false"
]
【问题讨论】:
【参考方案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时会抛出错误?以上是关于Terraform - 为变量指定多个可能的值的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 Terraform 为 Elastic Beanstalk 环境定义条件(每个环境)设置?
如何将 Terraform 输出变量保存到 Github Action 的环境变量中