如何在Terraform中实现变量与两个字符串对比判断并修复相关报错
错误原因
你的原代码逻辑不符合Terraform的运算符语法要求:|| 逻辑或运算符要求左右两侧操作数均为布尔值,你代码中||右侧直接写了字符串"Internal",没有做等值判断,因此触发了「需要布尔类型右操作数」的报错。
正确实现写法
写法1:直接补全等值判断
最直观的修改是把逻辑或两侧都补全为布尔类型的等值判断:
virtual_network_type = var.vnet_type == "External" || var.vnet_type == "Internal" ? var.vnet_type : null
写法2:使用contains函数简化(更易维护)
如果允许的取值后续可能增加,推荐用contains函数判断变量是否在允许的取值列表中,代码更简洁易扩展:
virtual_network_type = contains(["External", "Internal"], var.vnet_type) ? var.vnet_type : null
可选优化:提前做变量校验
如果要提前拦截非法的vnet_type输入,可以在变量定义块中添加校验规则,在Terraform计划阶段就抛出明确的错误提示:
variable "vnet_type" { type = string description = "虚拟网络类型,允许取值为External或Internal" validation { condition = contains(["External", "Internal"], var.vnet_type) error_message = "vnet_type仅允许传入External或Internal。" } }
内容的提问来源于stack exchange,提问作者devops-admin
相关产品推荐
相关产品推荐

