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

为Terragrunt配置Atlantis遇$PLANFILE问题,求自定义工作流解决方案

问题分析与解决方案

核心问题

你遇到的问题分为两部分:

  1. 使用Atlantis内置的$PLANFILE变量时执行plan报错,但改用固定路径/tmp/plan可以运行
  2. 固定路径会导致多项目计划互相覆盖,无法同时管理多个环境的计划

为什么$PLANFILE会报错?

$PLANFILE是Atlantis自动生成的唯一路径变量,每个项目/PR的计划文件都会有独立路径,不会冲突。报错的大概率原因是你的工作流配置有两处细节问题:

1. TERRAGRUNT_TFPATH的环境变量设置错误

官方配置里的command使用了嵌套引号,导致shell解析异常。正确的写法应该去掉echo输出里的额外引号:

- env:
    name: TERRAGRUNT_TFPATH
    command: 'echo terraform${ATLANTIS_TERRAFORM_VERSION}'

(原配置里的echo "terraform${ATLANTIS_TERRAFORM_VERSION}"会把引号也作为环境变量值的一部分,导致Terragrunt无法找到正确的Terraform二进制文件)

2. 缺少autoplan与when_modified配置

第一个配置里没有定义autoplan规则,Atlantis无法识别哪些文件变更需要触发计划,也无法正确关联项目目录与计划文件。这会导致$PLANFILE的生成逻辑异常,进而报错。

正确的配置方案

结合你的目录结构,下面是修正后的atlantis.yaml配置,既解决$PLANFILE报错问题,又避免计划文件覆盖:

version: 3
automerge: false
parallel_apply: false
parallel_plan: false
projects:
  - dir: test-atlantis/prod/bucket
    autoplan:
      enabled: true
      when_modified:
        - '*.hcl'
        - '*.tf*'
        - ../terragrunt.hcl
        - ../common_vars.yaml
        - ../../../gcp-modules/test-atlantis/bucket/*.tf*
    workflow: terragrunt

  - dir: test-atlantis/stage/bucket
    autoplan:
      enabled: true
      when_modified:
        - '*.hcl'
        - '*.tf*'
        - ../terragrunt.hcl
        - ../common_vars.yaml
        - ../../../gcp-modules/test-atlantis/bucket/*.tf*
    workflow: terragrunt

workflows:
  terragrunt:
    plan:
      steps:
        # 修正TERRAGRUNT_TFPATH的设置
        - env:
            name: TERRAGRUNT_TFPATH
            command: 'echo terraform${ATLANTIS_TERRAFORM_VERSION}'
        # 正确使用$PLANFILE,Atlantis会自动生成唯一路径
        - run: terragrunt plan -no-color -out $PLANFILE
    apply:
      steps:
        - env:
            name: TERRAGRUNT_TFPATH
            command: 'echo terraform${ATLANTIS_TERRAFORM_VERSION}'
        - run: terragrunt apply $PLANFILE

额外验证步骤

如果还是报错,可以按以下步骤排查:

  • 检查Atlantis运行用户是否有$PLANFILE路径的读写权限(默认路径在Atlantis的工作目录下,一般权限没问题)
  • 查看Atlantis的日志,确认TERRAGRUNT_TFPATH的实际值是否正确(比如是否输出为terraform1.5.0这类合法的Terraform二进制名称)
  • 确保Terragrunt版本与Terraform版本兼容

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.24 02:05:34