Terraform Apply在gitlab CI中运行两次-如何预防?

问题描述

我们有一个管道,其中包括作为独立CI步骤的“地形计划”和“地形应用”,因此在生产中,我们可以在应用之前手动检查更改(但是,对于审核应用程序/登台,我们很高兴它们能够自动运行)。该计划作为工件在作业之间传递。

我们遇到了几个问题,开发人员在不重新运行“ terraform plan”的情况下重新运行了“ terraform apply”工作。我正在尝试找出如何识别并防止它。

我很奇怪terraform计划没有包含地形状态的哈希值,因此apply可以识别状态已更改并且拒绝继续。

是否有解决此问题的建议方法?我们已经尝试过:

  • 搜索terraform中的选项来避免这种情况(到目前为止没有实现)
  • 在gitlab中搜索选项可避免这种情况(到目前为止没有实现)

我们目前正在计划阶段考虑自己对tfstate文件的校验和,然后在应用阶段开始时进行检查-但我不禁感到这应该已经存在了。 / p>

(状态存储在S3存储桶中。我们还使用dynamodb进行锁定)

删除.gitlab-ci.yml进行说明:

stages:
  - plan
  - apply

terraform plan:
   image: hashicorp/terraform:0.12.26
   stage: plan
   script:
      - terraform init 
      - terraform plan -out terraform.plan
   artifacts:
     paths:
        - terraform.plan

terraform apply:
   image: hashicorp/terraform:0.12.26
   stage: apply
   script:
      - terraform apply -auto-approve terraform.plan
   rules:
      - if: $CI_MERGE_REQUEST_TARGET_BRANCH_NAME == "master"
        when: manual
      - when: on_success

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)