如何用YAML锚点为Terraform的Azure资源组复用标签?
解决Terraform中YAML锚点标签合并报错问题
你遇到的Call to function "yamldecode" failed错误,是因为YAML语法使用错误——直接在字典中放置锚点引用*commontags不符合YAML规范,字典条目必须是键值对形式。要合并锚点中的字典内容,需要使用YAML的合并键<<。
修正后的YAML代码
commontags: &commontags Tag1: value1 Tag2: value2 Tag3: value3 Tag4: value4 tags: Tag5: value5 Tag6: value6 <<: *commontags
<<: *commontags会将锚点commontags中的所有键值对合并到tags字典中,最终tags会包含Tag1-Tag6的所有标签。
替代方案:用Terraform本地值+merge函数
如果不想依赖YAML锚点,也可以直接在Terraform代码中定义通用标签,通过merge函数合并,更直观且不易出错:
locals { common_tags = { Tag1 = "value1" Tag2 = "value2" Tag3 = "value3" Tag4 = "value4" } } resource "azurerm_resource_group" "example" { name = "example-rg" location = "East US" tags = merge(local.common_tags, { Tag5 = "value5" Tag6 = "value6" }) }
内容的提问来源于stack exchange,提问作者ByteCruncher
相关产品推荐
相关产品推荐

