You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Terragrunt配置中如何让.hcl文件的locals可选?

解决Terragrunt中可选locals的tags合并问题

问题出在你当前的try仅处理了tags属性不存在的场景,但如果对应配置文件中没有定义locals块,或者locals里完全没有tags字段,try的范围没覆盖到整个属性链,就会触发"Unsupported attribute"错误。

直接扩大try的覆盖范围,就能实现省略的tags自动视为空对象的需求,两种可行写法:

写法一:先给变量默认空对象

global_vars   = try((read_terragrunt_config(find_in_parent_folders("global.hcl"))).locals, {})
env_vars      = try((read_terragrunt_config(find_in_parent_folders("env.hcl"))).locals, {})
workload_vars = try((read_terragrunt_config(find_in_parent_folders("workload.hcl"))).locals, {})

tags = merge(
  try(local.global_vars.tags, {}),
  try(local.env_vars.tags, {}),
  try(local.workload_vars.tags, {})
)

写法二:直接在merge中嵌套try(更简洁)

tags = merge(
  try((read_terragrunt_config(find_in_parent_folders("global.hcl"))).locals.tags, {}),
  try((read_terragrunt_config(find_in_parent_folders("env.hcl"))).locals.tags, {}),
  try((read_terragrunt_config(find_in_parent_folders("workload.hcl"))).locals.tags, {})
)

这两种写法都会在以下场景返回空对象:

  • 目标配置文件不存在
  • 配置文件中没有定义locals块
  • locals块中没有tags属性

merge函数会自动忽略空对象,最终合并所有存在的tags属性。

内容的提问来源于stack exchange,提问作者Jamie Jonas

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.14 05:45:47