Основы CodeDeploy и appspec.yml

Автоматизация развёртывания на AWS

Dunieski Otano

Amazon Web Services Solutions Architect

Что делает CodeDeploy

схема

  • Развёртывает код в EC2, Lambda или ECS
  • Загружает артефакт сборки из S3, GitHub или Bitbucket
  • Выполняет ваш скрипт развёртывания на этапах жизненного цикла
  • Автоматически откатывает изменения при сбое
Автоматизация развёртывания на AWS

Основные компоненты CodeDeploy

схема

  • Application (приложение): имя, объединяющее развёртывания
  • Deployment group (группа развёртывания): какие ресурсы получат релиз
  • Deployment configuration (конфигурация развёртывания): как проходит раскатка (пакетами инстансов или сдвигом трафика)
  • Revision (ревизия): пакет артефактов, который разворачивается
Автоматизация развёртывания на AWS

Знакомство с appspec.yml

appspec

  • YAML-файл в корне ревизии
  • version: 0.0 и os: linux обязательны в начале файла
  • Указывает CodeDeploy, какие файлы куда копировать
  • Указывает CodeDeploy, что и когда запускать
Автоматизация развёртывания на AWS

События жизненного цикла на EC2

  • Вы пишете: ApplicationStop, BeforeInstall, AfterInstall
  • Вы пишете: ApplicationStart, ValidateService
  • Система выполняет: DownloadBundle, Install
  • Каждый хук — это shell- или PowerShell-скрипт на инстансе

диаграмма

Автоматизация развёртывания на AWS

События жизненного цикла в Lambda

  • У Lambda всего два хука: BeforeAllowTraffic, AfterAllowTraffic
  • Хуки — это функции Lambda, а не shell-скрипты
  • CodeDeploy переключает алиас на новую версию
  • Нет инстансов для входа и файлов для копирования

сравнение

Автоматизация развёртывания на AWS

Реальный appspec.yml для EC2

  • version: 0.0 и os: linux в начале файла
  • files: копирует содержимое app.zip в /var/www/app
  • BeforeInstall, AfterInstall, ApplicationStart: скрипты жизненного цикла
  • ValidateService: smoke-тест подтверждает успех

архив

Автоматизация развёртывания на AWS

Давайте потренируемся!

Автоматизация развёртывания на AWS

Preparing Video For Download...