Как мы можем поддерживать состояние группы автоматического масштабирования при использовании развертывания 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