Ответ 1
CodeDeploy - отличное решение вашей проблемы. Если он настроен правильно, он может автоматически развертываться в новых экземплярах EC2, которые создаются с помощью автомасштаба. Чтобы получить эту работу, вам понадобятся три вещи:
- Группа автоматического масштабирования, которая запускает экземпляры с установленным и запущенным последним хост-агентом.
- Код Разверните группу развертывания, настроенную для развертывания в этой группе автоматического масштабирования (в качестве группы автоматического масштабирования не по тегам).
- Целевая версия для автоматического развертывания в новых экземплярах. Если целевой ревизии нет, Code Deploy увидит запуск экземпляра, но ничего не будет внедрять.
Вот учебник, который вы можете использовать для начала работы: Учебное пособие: использование AWS CodeDeploy для развертывания приложения в группе автоматического масштабирования. В этом учебном пособии вы пройдете через выемку AMI с установленным агентом и настройте группу развертывания для развертывания вашего кода в новых экземплярах.
Если вы выпекаете AMI с предварительно установленным агентом, вам нужно будет регулярно обновлять это изображение с помощью релизов агентов. Как только агент будет установлен, он обновится, но автоматическое масштабирование может привести к сбою запуска вашего экземпляра, если версия агента больше не поддерживается Code Deploy. Для фактического использования продукции я бы рекомендовал не выпекать AMI и вместо этого устанавливать новейшего агента при запуске ваших экземпляров. (Учебник должен быть обновлен, чтобы использовать этот метод в ближайшее время.)
Вы можете настроить свои экземпляры для автоматической загрузки и запуска последней установки при загрузке. По существу, вы вставляете оболочку script в качестве пользовательских данных при создании группы автоматического масштабирования.
Например, я протестировал следующее script на Amazon Linux (взято из Настройка нового экземпляра EC2 Amazon для работы с AWS CodeDeploy):
#!/bin/bash
yum -y update
yum install -y aws-cli
cd /home/ec2-user
aws s3 cp s3://aws-codedeploy-us-east-1/latest/install . --region us-east-1
chmod +x ./install
./install auto
Вы должны вставить это в качестве user data
при создании группы автоматического масштабирования. Для автоматического масштабирования вы устанавливаете это при создании конфигурации запуска в настройках конфигурации → расширенные данные.
Чтобы настроить группу развертывания и установить целевую ревизию:
- Создайте или отредактируйте группу развертывания, чтобы включить группу автоматического масштабирования. (Примечание. Для этого необходимо создать группу автоматического масштабирования.)
- Убедитесь, что в группе Auto Scaling имеется как минимум 1 экземпляр.
- Разверните набор артефактов, который вы хотите автоматически развернуть в группу развертывания.
- Предполагая, что шаг 3 был успешным, группа развертывания теперь будет иметь этот набор пакетов в качестве целевой версии. Для автоматического развертывания это становится известной хорошей версией для развертывания.
Новые экземпляры, которые запускаются с помощью автоматического масштабирования в этой группе автоматического масштабирования, будут иметь целевую ревизию группы развертывания, автоматически развернутой для них. Исправления из неудавшихся ручных развертываний автоматически не будут развернуты автоматически.