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

GitLab Terraform部署报错:应用已保存计划时无法设置变量

GitLab Terraform部署报错:应用已保存计划时无法使用变量选项

问题场景

当前使用的GitLab CI/CD Terraform构建与部署阶段YAML配置如下:

构建阶段

build:
  extends: .terraform:build
  script:
    - cd "${TF_ROOT}"
    - gitlab-terraform plan --var-file=local.tfvars --var-file=common.tfvars
    - gitlab-terraform plan-json --var-file=local.tfvars --var-file=common.tfvars

部署阶段

deploy:
  extends: .terraform:deploy
  script:
    - cd "${TF_ROOT}"
    - gitlab-terraform apply --var-file=local.tfvars --var-file=common.tfvars
  environment:
    name: $TF_STATE_NAME

首次部署执行正常,但第二次部署时触发错误:

Error: Can't set variables when applying a saved plan
应用已保存计划文件时无法使用-var和-var-file选项,因为已保存计划包含创建时设置的变量值。
ERROR: Job failed: exit code 1

解决方案

问题根源在于GitLab的gitlab-terraform工具会自动在build阶段保存plan生成的计划文件,deploy阶段默认会复用这个已保存的计划,此时传递--var-file参数会和计划文件中已包含的变量值冲突。

修改部署阶段的命令,去掉变量参数即可:

deploy:
  extends: .terraform:deploy
  script:
    - cd "${TF_ROOT}"
    - gitlab-terraform apply
  environment:
    name: $TF_STATE_NAME

补充说明

  • 计划文件已经包含了build阶段使用的变量值,deploy阶段无需重复传递变量参数
  • 只需保证build和deploy阶段的运行环境变量、配置文件完全一致,即可确保部署逻辑和计划阶段一致

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.10 17:46:07