Terraform 12如何支持多行标签配置语法?兼容Terraform 11写法问题
Terraform 12中标签配置的多行写法支持问题
当然支持多行写法啦!你碰到的Expected an attribute value, introduced by an equals sign ("=")错误,多半是换行时没遵循HCL2的语法规则导致的,不是Terraform 12不支持多行。
正确的多行写法示例
你可以把merge函数的参数拆分成多行,只要保证括号配对正确、逗号放在参数行的末尾,并且保持一致的缩进就行:
tags = merge( map("Name", format("%s-%s-%s", var.environment_name, "WAN", "RouteTable")), var.tags_module, var.tags_global )
如果想把format函数的参数也拆分(进一步提升可读性),也可以这么写:
tags = merge( map( "Name", format( "%s-%s-%s", var.environment_name, "WAN", "RouteTable" ) ), var.tags_module, var.tags_global )
为什么之前的拆分触发错误?
大概率是你换行的位置不符合HCL2的要求,比如直接在=后换行,或者把逗号放在了行首:
# 错误写法:直接在=后换行 tags = merge(map("Name", format("%s-%s-%s",var.environment_name,"WAN","RouteTable")), var.tags_module, var.tags_global) # 错误写法:逗号在行首 tags = merge( map("Name", format("%s-%s-%s",var.environment_name,"WAN","RouteTable")) , var.tags_module , var.tags_global )
这两种写法都会让Terraform解析时认为属性值不完整,从而抛出错误。
Terraform 12的HCL2语法比11更严谨,但也更灵活,只要遵循语法规则拆分,多行写法完全没问题,还能大幅提升复杂表达式的可读性。
内容的提问来源于stack exchange,提问作者overflowed
相关产品推荐
相关产品推荐

