Автоматизация развертывания кода с помощью AWS CodeCommit и CodeDeploy
Опубликовано: 2022-03-25Как веб-разработчик, ваша работа может включать в себя несколько сложных задач, таких как автоматизация развертывания кода на производственных серверах или если вы работаете в группе и сталкиваетесь с проблемами при загрузке своего кода на работающий веб-сайт, тогда этот пост в блоге является решением для преодоления всех таких проблем. вопросы.
При использовании FTP вы, должно быть, перезаписали код вашего соразработчика, что довольно часто встречается у большинства из нас. Это руководство покажет вам автоматизацию развертывания кода с помощью сервисов AWS CodeCommit, CodeDeploy и Pipeline.
Технологический обзор:
- AWS CodeCommit : мы будем использовать CodeCommit для поддержки наших репозиториев (файлов веб-контента/кода), в которых будут храниться все файлы проекта и журналы коммитов.
- Сервер EC2 : мы будем использовать EC2 в качестве нашего производственного сервера, он будет содержать рабочий сайт и код для посетителей вашего сайта.
- AWS CodeDeploy : он будет содержать приложение для публикации вашего кода на сервере EC2. Мы также создадим группу развертывания, которая будет содержать имя/тег целевого экземпляра EC2, в котором мы хотим опубликовать наш код.
- Pipeline : мы выберем CodeCommit в качестве источника и CodeDeploy в качестве этапа развертывания. Таким образом, всякий раз, когда в CodeCommit обнаруживаются какие-либо изменения кода, конвейер запускается и передает эти изменения кода в CodeDeploy (экземпляр EC2).
Автоматизация развертывания кода: подробное объяснение :
Создание пользователя IAM и Git для автоматизации развертывания кода
Сначала нам нужно создать пользователя IAM и пользователя Git, которые будут вносить изменения в код и публиковать их на сервере развертывания.
- Создать пользователя IAM
- Разрешить доступ к : AWSCodeCommitFullAccess, AWSCodeDeployFullAccess, AWSCodeCommitPowerUser. Вы найдете эту опцию на вкладке «Прикрепить существующие политики напрямую».
- Теперь войдите в систему с этим пользователем IAM.
- Нажмите « Учетные данные безопасности » в правом верхнем углу.
- Щелкните вкладку учетных данных AWS CodeCommit .
- В разделе «Учетные данные HTTPS Git для AWS CodeCommit» нажмите кнопку « Создать учетные данные» .
- Теперь скопируйте это имя пользователя и пароль в безопасное место. Это будет ваше основное имя пользователя и пароль Git для отправки/получения изменений кода.
Создание репозитория в CodeCommit
Теперь давайте создадим репозиторий, в котором будет храниться именно ваш код.
- Перейдите на панель управления CodeCommit от пользователя IAM.
- В правом верхнем углу выберите регион, в котором вы хотите создать репозиторий.
- Нажмите «Создать репозиторий», дайте ему имя, описание и нажмите «Создать».
- В разделе « Клонировать репозиторий » вы увидите URL-адрес вашего репозитория. Сохраните его в надежном месте. Это будет выглядеть так: https://git-codecommit.ap-south-1.amazonaws.com/v1/repos/HarryTest
Загрузка файла проекта в первый раз
- Откройте командную строку вашей локальной системы, где находится исходный код.
- В командной строке перейдите к пути, где находится ваш код.
- Теперь выполните следующие команды, чтобы впервые отправить свой код в репозиторий AWS:
git инициировать
git config –local init.defaultBranch основной
git config –global init.defaultBranch main
git добавить . ## это зафиксирует все файлы проекта
git commit –m «Первоначальная фиксация»
git push https://git-codecommit.ap-south-1.amazonaws.com/v1/repos/HarryTest – все
- Создайте экземпляр EC2 и установите агент CodeDeploy
- Создать роль экземпляра
- Откройте консоль AWS IAM.
- Перейдите на вкладку Роли >> Создать роль.
- В разделе Выберите тип доверенного лица выберите Сервис AWS . В разделе «Выберите вариант использования» выберите EC2 . В разделе «Выберите вариант использования» выберите EC2. Выберите Далее: Разрешения .
- Найдите и выберите политику с именем AmazonEC2RoleforAWSCodeDeploy , а затем выберите Далее: Теги .
- Выберите Далее: Обзор. Введите имя роли (например, EC2InstanceRole ) и нажмите « Создать » .
- Создайте экземпляр EC2
- Перейдите в консоль EC2. Нажмите «Запустить экземпляр».
- Выберите образ машины Amazon (AMI), найдите Amazon Linux 2 AMI (HVM), тип тома SSD и нажмите «Выбрать». (Этот образ AMI помечен как «Подходящий для уровня бесплатного пользования» и находится в верхней части списка.)
- Выберите страницу «Тип экземпляра», выберите тип t2.micro, соответствующий уровню бесплатного пользования, в качестве аппаратной конфигурации для вашего экземпляра, а затем нажмите « Далее: настроить сведения об экземпляре» .
- На странице «Сведения об экземпляре» выполните следующие действия:
- В поле Количество экземпляров введите 1 .
- В разделе «Автоматическое назначение общедоступного IP-адреса» выберите «Включить » .
- В роли IAM выберите роль IAM, созданную в предыдущей процедуре (например, EC2InstanceRole ).
- Разверните Дополнительные сведения и в поле Данные пользователя введите следующее:
#!/бин/баш
ням -у обновление
ням установить -y рубин
yum установить -y aws-cli
cd /home/ec2-пользователь
wget https://aws-codedeploy-us-east-2.s3.us-east-2.amazonaws.com/latest/install
chmod +x ./установить
./установить авто
- Оставьте остальные элементы на странице «Шаг 3. Настройка сведений об экземпляре» без изменений. Выберите Далее: Добавить хранилище .
- Оставьте страницу Шаг 4: Добавить хранилище без изменений, а затем выберите Далее: Добавить теги.
- Выберите « Добавить тег» . В поле Key введите Name , а в поле Value введите MyCodePipelineDemo . Выберите «Далее: настроить группу безопасности». Позже вы создадите приложение CodeDeploy, которое развертывает образец приложения в этом экземпляре. CodeDeploy выбирает экземпляры для развертывания на основе тегов, прикрепленных к экземплярам.
- На странице «Настройка группы безопасности» выполните следующие действия:
- Рядом с Назначить группу безопасности выберите Создать новую группу безопасности .
- В строке SSH в разделе Источник выберите Мой IP .
- Выберите « Добавить правило» , выберите « HTTP », а затем в разделе « Источник » выберите «Мой IP -адрес».
- Выберите «Просмотреть и запустить».
- На странице «Просмотр запуска экземпляра» выберите «Запуск». При запросе пары ключей выберите « Продолжить без пары ключей» .
- Выберите View Instances , чтобы закрыть страницу подтверждения и вернуться в консоль.
- Статус запуска можно посмотреть на странице Экземпляры . Когда вы запускаете экземпляр, его начальное состояние — «ожидание». После запуска экземпляра его состояние меняется на «работает», и он получает общедоступное DNS-имя. (Если столбец « Общедоступный DNS » не отображается, выберите значок «Показать/скрыть » , а затем выберите « Общедоступный DNS » .)
- Подготовка экземпляра к подключению может занять несколько минут. Просмотрите информацию в столбце « Проверки состояния », чтобы узнать, прошел ли ваш экземпляр проверки состояния.
Создайте приложение в CodeDeploy
- Создание роли службы CodeDeploy
- Откройте консоль IAM по адресу https://console.aws.amazon.com/iam/.
- На панели управления консоли выберите Роли .
- Выберите Создать роль .
- В разделе Выберите тип доверенного лица выберите Сервис AWS . В разделе Выберите вариант использования выберите CodeDeploy . В разделе Выберите вариант использования выберите CodeDeploy. Выберите Далее: Разрешения. Управляемая политика AWSCodeDeployRole уже привязана к роли.
- Выберите «Далее: Теги» и «Далее: Обзор».
- Введите имя роли (например, CodeDeployRole), а затем выберите Создать роль.
- Создайте приложение в CodeDeploy
- Откройте консоль CodeDeploy по адресу https://console.aws.amazon.com/codedeploy.
- Если страница Приложения не отображается, в меню выберите Приложения .
- Выберите Создать приложение .
- В имени приложения введите MyDemoApplication .
- В Compute Platform выберите EC2/On-premises .
- Выберите Создать приложение.
- Создайте группу развертывания в CodeDeploy.
- На странице, отображающей ваше приложение, выберите Создать группу развертывания .
- В поле Имя группы развертывания введите MyDemoDeploymentGroup .
- In-Service Role выберите созданную ранее роль службы (например, CodeDeployRole ).
- В разделе Тип развертывания выберите На месте .
- В разделе «Конфигурация среды » выберите «Инстансы Amazon EC2 ». В поле Ключ введите Имя . В поле «Значение» введите имя, которое вы использовали для тега экземпляра (например, MyCodePipelineDemo ).
- В разделе Конфигурация развертывания выберите CodeDeployDefault.OneAtaTime .
- В разделе «Балансировка нагрузки» убедитесь, что флажок «Включить балансировку нагрузки» не выбран . Для этого примера вам не нужно настраивать балансировщик нагрузки или выбирать целевую группу.
- Разверните раздел «Дополнительно». В разделе «Тревоги», если в списке есть какие-либо тревоги, выберите «Игнорировать конфигурацию тревог».
- Выберите Создать группу развертывания.
Создать конвейер
- Создать конвейер
- Войдите в Консоль управления AWS и откройте консоль CodePipeline по адресу http://console.aws.amazon.com/codesuite/codepipeline/home.
- Откройте консоль CodePipeline по адресу https://console.aws.amazon.com/codepipeline/.
- Выберите Создать конвейер .
- На шаге 1 : выберите параметры конвейера в поле имени конвейера введите MyFirstPipeline .
- В роли службы выберите новую роль службы, чтобы позволить CodePipeline создать роль службы в IAM.
- Оставьте параметры в разделе «Дополнительные параметры» по умолчанию, а затем нажмите «Далее».
- На шаге 2 : добавьте этап исходного кода в поставщике исходного кода выберите CodeCommit .
В поле Имя репозитория выберите имя репозитория CodeCommit, созданного на шаге 1: Создайте репозиторий CodeCommit. В поле Имя ветки выберите основной, а затем выберите Следующий шаг. - После выбора имени репозитория и ветви в сообщении отображается правило Amazon CloudWatch Events, которое необходимо создать для этого конвейера.
- В параметрах «Обнаружение изменений» оставьте значения по умолчанию. Это позволяет CodePipeline использовать события Amazon CloudWatch для обнаружения изменений в исходном репозитории.
- Выберите Далее .
- На шаге 3 : Добавить стадию сборки выберите Пропустить стадию сборки , а затем примите предупреждающее сообщение, снова выбрав Пропустить . Выберите Далее .
Примечание . В этом руководстве вы развертываете код, для которого требуется служба без сборки, поэтому этот шаг можно пропустить. Однако, если ваш исходный код необходимо собрать перед его развертыванием в экземплярах, вы можете настроить CodeBuild на этом шаге.
- На шаге 4 : добавьте этап развертывания в поставщике развертывания выберите CodeDeploy .
В имени приложения выберите MyDemoApplication . В группе Развертывание выберите MyDemoDeploymentGroup , а затем выберите Следующий шаг . - На шаге 5 : просмотрите информацию, а затем выберите « Создать конвейер » .
- Конвейер начинает работать после его создания. Он загружает код из вашего репозитория CodeCommit и создает развертывание CodeDeploy в вашем экземпляре EC2. Вы можете просматривать сообщения о ходе выполнения, «успехе» и «сбое», когда пример CodePipeline развертывает веб-страницу в инстансе Amazon EC2 в развертывании CodeDeploy.
Теперь все готово! Перейдите в Развертывание ⇒ Развертывания. Вы увидите журналы всех успешных и неудачных развертываний.
Чтобы проверить изменения на сайте, откройте свой инстанс EC2, найдите общедоступный DNS, который будет выглядеть так: http://ec2-3-108-40-48.ap-south-1.compute.amazonaws.com .
Как только вы просмотрите его, вы увидите свои живые страницы.
Вы успешно завершили автоматизацию развертывания кода. Теперь вы можете отправлять новые изменения кода в свой репозиторий и автоматически публиковать их на своем сайте. Если вы все еще сталкиваетесь с какими-либо проблемами, не стесняйтесь комментировать здесь.