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