Интеграция IaC в CI/CD-пайплайны

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

Dunieski Otano

Amazon Web Services Solutions Architect

Сначала код, инфраструктура потом

сначала код

  • Код разворачивается через CodePipeline, а инфраструктура обновляется вручную
  • Разработчики масштабируют Lambda, эксплуатация — очередь SQS
  • Расхождение между кодом и инфраструктурой приводит к сбоям
  • Подключите CloudFormation к тому же пайплайну
Автоматизация развёртывания на AWS

CloudFormation как действие в пайплайне

действие пайплайна

  • CodePipeline поддерживает действие CloudFormation deploy
  • Пайплайн передаёт действию артефакт шаблона
  • Режимы: CREATE_UPDATE, DELETE_ONLY, REPLACE_ON_FAILURE, CHANGE_SET_REPLACE / EXECUTE
  • Выполняется вместе с действиями source, build и app-deploy
Автоматизация развёртывания на AWS

Типичный сквозной пайплайн

типичный процесс

  • Source: пуш в Git запускает пайплайн
  • Build: создаётся шаблон и артефакт приложения
  • Deploy infra: CloudFormation создаёт или обновляет стек
  • Deploy app: CodeDeploy разворачивает новую версию
Автоматизация развёртывания на AWS

Автоматический откат при сбое стека

  • Неудачные обновления автоматически откатываются к последнему рабочему состоянию
  • Этап пайплайна завершается ошибкой, что останавливает последующие этапы
  • Оповещения об ошибках из главы 1 срабатывают автоматически

автоматически

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

Вложенные стеки для модульных шаблонов

  • Вложенный стек объявляется как тип AWS::CloudFormation::Stack
  • Разбейте шаблон из 2 000 строк на переиспользуемые модули
  • Родительский стек передаёт параметры и считывает выходные значения
  • Каждый модуль разворачивается независимо внутри родительского

вложенный стек

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

StackSets для нескольких аккаунтов и регионов

  • StackSet разворачивает один шаблон в нескольких аккаунтах и регионах
  • Полезно для базовых настроек безопасности, защитных ограничений, общей инфраструктуры
  • Добавляйте и удаляйте экземпляры стеков без изменения шаблона
  • Централизованное управление, локальное развёртывание

StackSet

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

Выбор правильного подхода

правильный выбор

  • Один стек: небольшое приложение, одна среда
  • Вложенные стеки: большой шаблон, модульные компоненты
  • StackSets: один шаблон, много аккаунтов и регионов
  • Все три подхода хорошо сочетаются с CodePipeline
Автоматизация развёртывания на AWS

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

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

Preparing Video For Download...