GitHub Actions中设置TF_LOG无效如何调试Terragrunt Plan报错
问题根因
TF_LOG=DEBUG配置本身是生效的,你看不到DEBUG日志的核心原因是执行terragrunt run-all plan时加了>/dev/null重定向规则,所有标准输出内容(包括Terraform DEBUG级别日志、报错信息)全被直接丢弃,不会输出到GitHub Actions日志面板。- 仅在run脚本内用
export声明环境变量,存在小概率无法透传给Terragrunt拉起的所有Terraform子进程的情况,稳定性不如直接在工作流步骤级env块声明变量。 - 你写的
terragrunt show tfplan本身存在逻辑错误:run-all模式下每个子模块会在自身工作目录生成独立的plan文件,根目录不存在名为tfplan的plan文件,这行命令本身也会触发执行失败。
可用的修复配置
直接替换原有Terragrunt Plan步骤的代码即可:
- name: Terragrunt Plan id: plan if: github.event_name == 'pull_request' # 步骤级环境变量会自动透传给该步骤拉起的所有子进程,不存在变量不生效问题 env: TF_LOG: DEBUG TERRAGRUNT_LOG: debug # 同时开启Terragrunt自身的调试日志,覆盖全链路 run: | # 移除>/dev/null重定向,保证所有日志正常输出 # 增加--terragrunt-parallelism=1参数串行执行所有模块,避免多模块并行输出日志交错,难以定位报错点 terragrunt run-all plan -no-color --terragrunt-non-interactive --terragrunt-parallelism=1 -out=tfplan # 如需查看plan结果,不要直接在根目录执行show,可根据plan执行输出的报错模块路径,进入对应目录执行show,或调整run-all遍历逻辑
调试优化技巧
- 如果DEBUG日志量级太大,关键报错被冲刷,可以先把
TF_LOG调整为INFO级别,定位到具体出错的模块后,单独进入对应模块目录开启DEBUG日志复现问题,减少无效日志干扰。 - 如果需要同时留存日志文件,可以把执行命令调整为
terragrunt run-all plan -no-color --terragrunt-non-interactive --terragrunt-parallelism=1 -out=tfplan 2>&1 | tee plan_debug.log,日志既会实时打印到Actions控制台,也会全量存入plan_debug.log文件,后续可作为工作流产物上传留存。 - 非必要不要在CI执行步骤里加
>/dev/null重定向,该规则会无差别丢弃所有标准输出,包括报错堆栈,直接提升问题排查成本。
内容的提问来源于stack exchange,提问作者bibi
相关产品推荐
相关产品推荐

