Terraform apply дважды запускается в gitlab CI - как предотвратить?

У нас есть конвейер, который включает в себя "план терраформирования" и "применение терраформирования" в качестве отдельных шагов CI, так что в производстве мы можем вручную просмотреть изменения перед применением (однако при проверке приложений / постановке мы рады, что они запускаются автоматически). План передается как артефакт между заданиями.

У нас было несколько проблем, когда разработчики повторно запускали задание "terraform apply" без повторного запуска "terraform plan". Я пытаюсь понять, как это определить и предотвратить.

Я удивлен, что план терраформирования, например, не включает хэш состояния терраформирования, и поэтому apply может определить, что состояние изменилось, и отказаться от продолжения.

Есть ли способ исправить это? Мы пробовали:

  • Поиск вариантов в терраформе, чтобы этого избежать (пока ничего)
  • Поиск вариантов в gitlab, чтобы этого избежать (пока ничего)

В настоящее время мы изучаем нашу собственную контрольную сумму файла tfstate на этапе планирования, а затем проверяем ее в начале этапа применения - но я не могу избавиться от ощущения, что это уже должно быть там.

(Состояние хранится в корзине 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

0 ответов

Другие вопросы по тегам