Terraform中如何为map类型变量定义默认值?语法规范答疑
Terraform Map类型变量默认值写法合法性确认
场景示例
用户在input.tfvars中定义的project变量:
project = { name = "sampleproject" team = "Code" }
在variables.tf中,有两种默认值写法:
写法1(键名无引号):
variable "project"{ type = map(string) default ={ name = "defaultproject" team = "defaultteam" } }
写法2(键名带引号):
variable "project"{ type = map(string) default ={ "name" = "defaultproject" "team" = "defaultteam" } }
结论
这两种写法都是完全合法且有效的,Terraform的HCL语法同时支持这两种map键的定义方式。
原因说明
HCL(HashiCorp配置语言)对map键名的规则如下:
- 当键名是合法标识符(由字母、数字、下划线组成,且不以数字开头)时,引号可以省略,比如
name、team这类符合规则的键名; - 如果键名包含特殊字符(如空格、连字符、@等),则必须用引号包裹,比如
"project-name"、"team id"。
在你的示例中,name和team都是合法标识符,所以两种写法的效果完全一致,Terraform会解析出相同的map默认值。
内容的提问来源于stack exchange,提问作者Vishal
相关产品推荐
相关产品推荐

