Как мы можем поддерживать состояние группы автоматического масштабирования при использовании развертывания Blue/Green в AWS CodeDeploy?

Мы настроили нашу инфраструктуру для проекта, использующего Terraform, включая группы кода развертывания, ALB и автомасштабирования. До сих пор мы делали развертывания на месте. Но сейчас мы пытаемся перейти на сине-зеленое развертывание. Поскольку развертывание CodeDeploy Blue/Green заменяет всю группу автоматического масштабирования при успешном развертывании, старое состояние группы автоматического масштабирования в файле состояния Terraform станет устаревшим и не будет отражать новую группу автоматического масштабирования, добавленную службой CodeDeploy. Есть какой-нибудь известный способ преодолеть это?

2 ответа

Ты можешь использовать

      lifecycle {
  ignore_changes = [autoscaling_groups]
}

в .

Вы также должны установить autoscaling_groups к [] в aws_codedeploy_deployment_group поскольку вновь созданная группа автомасштабирования будет другой (созданной CodeDeploy), когда CodeDeploy развернет новую зеленую среду.

Таким образом, приведенный выше код будет игнорировать изменения, которые происходят при удалении / создании группы автомасштабирования. Это связано с тем, что CodeDeploy берет на себя управление созданием группы автомасштабирования после реализации сине-зеленого развертывания.

В зависимости от того, как вы запускаете развертывание кода, вы можете запустить импорт Terraform в качестве ловушки после развертывания в ваших сценариях развертывания, чтобы обновить состояние Terraform, чтобы оно указывало на новую группу автоматического масштабирования. Вам нужно будет как-то получить имя новой ASG через одну из множества клиентских библиотек или CLI

terraform import aws_autoscaling_group.some_asg_identifier name-of-your-replacement-asg
Другие вопросы по тегам