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
相关产品推荐
相关产品推荐

