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

Terragrunt仅支持单层级include?多层级配置报错求助

Terragrunt多层级Include与Inputs合并问题

问题背景

目录结构

├── live
│   └── env
│       ├── dev
│       │   └── terragrunt.hcl
│       ├── qa
│       └── terragrunt.hcl
└── terragrunt.hcl

各层级Terragrunt配置

live/terragrunt.hcl

inputs = {
  account = "root"
}

live/env/terragrunt.hcl

include {
  path = find_in_parent_folders()
}

inputs = {
  env = "dev"
}

live/env/dev/terragrunt.hcl

include {
  path = find_in_parent_folders()
}

terraform {
  source = "../../../module/"
}
inputs = {
  name = "gaurang"
}

报错信息

ERRO[0000] /test_terragrunt/live/env/dev/terragrunt.hcl includes
/test_terragrunt/live/env/terragrunt.hcl, which itself includes
/test_terragrunt/live/env/terragrunt.hcl. Only one level of includes
is allowed.

ERRO[0000] Unable to determine underlying exit code, so
Terragrunt will exit with error code 1

疑问

移除live/env目录下的include配置后,无法合并父目录(live/terragrunt.hcl)的inputs。请问Terragrunt是否存在仅支持单层级include的限制?该如何解决此问题?


解答

Terragrunt没有严格的单层级include限制,报错是因为find_in_parent_folders()的默认行为导致了循环引用:
当live/env/terragrunt.hcl调用find_in_parent_folders()时,它会从当前目录(live/env)向上查找,默认匹配第一个找到的terragrunt.hcl——也就是它自己(当前目录下存在同名文件),而非上层的live/terragrunt.hcl,从而造成自引用循环。

解决方法

修改find_in_parent_folders()的调用参数,明确指定要查找的父级配置文件,避免自引用:

1. 修改live/env/terragrunt.hcl

将include块改为从父目录开始查找,跳过当前目录的配置文件:

include {
  # skip=1 表示跳过当前目录的terragrunt.hcl,从父目录开始查找
  path = find_in_parent_folders("terragrunt.hcl", skip = 1)
}

inputs = {
  env = "dev"
}

或者直接明确指定父级文件的相对路径:

include {
  path = "../terragrunt.hcl"
}

inputs = {
  env = "dev"
}

2. 保留live/env/dev/terragrunt.hcl的原有配置

它的find_in_parent_folders()会正确找到live/env/terragrunt.hcl,而后者已经正确引用了live/terragrunt.hcl,最终实现三层inputs的自动合并:

  • account = "root"(来自live/terragrunt.hcl)
  • env = "dev"(来自live/env/terragrunt.hcl)
  • name = "gaurang"(来自live/env/dev/terragrunt.hcl)

补充说明

  • find_in_parent_folders()的skip参数用于指定跳过当前目录开始的前N个同名文件,当当前目录存在配置文件时,设置skip=1可有效避免自引用。
  • Terragrunt支持多层级include嵌套,只要每个include指向正确的父级配置、不形成循环即可,所有层级的inputs会自动合并生效。

内容的提问来源于stack exchange,提问作者Gaurang Shah

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.20 16:42:32