如何解决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 举报,一经查实,本站将立刻删除。