
В этой статье мы расскажем, как настроить конвейер DevOps в AWS. Однако давайте начнём с определения того, что же такое DevOps.
Раньше разработка приложений обычно делилась между двумя командами: командой разработки и командой эксплуатации. Команда разработки писала код, тестировала его, а затем передавала команде эксплуатации, которая разворачивала его на сервере и обеспечивала бесперебойную работу и масштабирование.
В связи с недавним переходом на облачные вычисления от разработчиков теперь ожидается более глубокое понимание инфраструктуры, на которой работают их приложения. Это означает, что команды разработки и эксплуатации объединяются и работают вместе по принципу DevOps. Это позволяет разработчикам писать масштабируемый код, которым проще управлять в производственной среде.
Еще одним преимуществом метода работы DevOps является то, что проблемы в процессе производства можно выявить быстрее, если за операции отвечает та же команда, которая изначально разрабатывала приложение.
Итак, как конвейеры связаны с DevOps? Если взглянуть на прежний подход к работе в командах, разделённых на разработку и эксплуатацию, то релиз обычно следовал варианту процесса, описанного ниже.

- Команда разработчиков объединяет изменения кода, которые должны быть включены в релиз, в репозиторий кода.
- Команда разработчиков (или выделенный тестировщик) проводит тестирование релиза.
- Команда разработчиков создает производственную сборку, готовую к выпуску.
- Операционная группа получает производственную сборку и вручную развертывает её в рабочей среде. Обычно это происходит путём размещения пакета релиза в серверной среде и запуска скриптов.
Благодаря DevOps и объединённой команде разработки и эксплуатации мы можем выпускать небольшие функции быстрее. Задачи, связанные с эксплуатацией, можно выполнять параллельно с обычными процессами разработки. Чтобы сделать это ещё быстрее, мы можем автоматизировать задачи выпуска и тестирования с помощью конвейера DevOps. Размещение пакетов выпуска в серверной среде и запуск скриптов могут быть выполнены автоматически одним нажатием кнопки или просто путём отправки изменений кода в определённую ветку.
Подобный конвейер можно настроить с помощью ряда различных инструментов. Однако, если вы уже запускаете свои рабочие нагрузки в AWS, он включает в себя множество различных сервисов, которые помогут вам сделать это достаточно эффективно, не выходя из экосистемы AWS.
Давайте начнем создавать собственный конвейер для автоматизации некоторых задач развертывания.
Начиная
Мы автоматизируем развертывание простого статического сайта с использованием следующих сервисов AWS:
- CodePipeline — инструмент оркестровки, который помогает нам инициировать развертывание путем отправки в репозиторий исходного кода или ручным нажатием кнопок.
- CodeBuild — контейнер сборки, который может запускать скрипты, необходимые для задач развертывания.
- S3 — статический файловый хостинг, на котором будет размещен наш статический сайт.
Развёртываемый нами статический сайт состоит из простого HTML-файла, доступ к которому осуществляется по URL-адресу S3. Для развёртывания нам потребуется вручную загрузить HTML-файл в контейнер из консоли AWS. Хотя это может быть не так уж сложно, мы всегда можем сэкономить пару минут, автоматизировав эту задачу.
Целью конвейера является объединение вышеупомянутых сервисов AWS для достижения следующих целей:

Размещение статического сайта на S3
1. Создайте контейнер
Чтобы запустить наш статический сайт, сначала создадим контейнер S3. Для этого перейдите в AWS Console → Services → S3 → Create Bucket. Убедитесь, что к этому контейнеру открыт публичный доступ, чтобы наш сайт был доступен через Интернет. Остальные параметры оставьте по умолчанию.
2. Включить статический хостинг сайта
Теперь пора сделать наши HTML-файлы в контейнере доступными как статический сайт. Для этого перейдите в контейнер S3 → Свойства → Хостинг статических веб-сайтов → Использовать этот контейнер для размещения статического веб-сайта. Убедитесь, что в качестве индексного документа указан index.html , и нажмите «Сохранить». Теперь ваш сайт должен работать, если вы перейдете по URL-адресу конечной точки, отображаемому в диалоговом окне «Хостинг статических веб-сайтов».
Отлично! Теперь у нас есть статический сайт. Чтобы обновить его, нужно загрузить новую версию файла index.html в контейнер. Давайте автоматизируем это!
Создание конвейера
1. Создайте репозиторий CodeCommit
Для размещения кода нам понадобится репозиторий файлов. Это может быть GitHub или любой другой удобный вам сервис репозиториев. Для простоты мы будем использовать сервис репозиториев AWS CodeCommit.
Создайте репозиторий, перейдя в AWS Console → CodeCommit → Создать репозиторий. Введите имя и нажмите «Сохранить». Затем отправьте HTML-файл, подключившись к репозиторию по SSH или HTTPS. Если у вас нет вдохновения для файла, используйте файл ниже:
< p > Hello from linuxgazette.ru! p >
2. Создайте конвейер CodePipeline
Теперь пришло время создать конвейер, который будет координировать процесс развёртывания нашего статического сайта. Чтобы начать его создание, перейдите в AWS Console → CodePipeline → Create new pipeline.
Шаг 1
- Введите название трубопровода.
- Выберите «Новая роль службы».
- Оставьте все остальное по умолчанию.
Шаг 2
- Выберите AWS CodeCommit в качестве поставщика источника.
- Выберите в качестве источника недавно созданный репозиторий.
- В качестве имени ветви выберите ветвь, из которой вы хотите построить.
- Оставьте все остальное по умолчанию.
Шаг 3
- Нажмите «Пропустить этап сборки» — нам не нужно собирать наши файлы в этом конвейере, поскольку это просто статический HTML.
Шаг 4
- Выберите Amazon S3 в качестве этапа развертывания.
- В качестве Ведра выберите созданное вами ранее ведро.
- Оставьте ключ объекта S3 пустым.
- Установите флажок Извлечь файл перед развертыванием.
- Разверните панель «Дополнительная конфигурация» и выберите «публичное чтение» в качестве готового списка ACL.
- Нажмите «Сохранить».
Шаг 5
Тада! Теперь ваш конвейер должен запуститься и развернуть HTML-файл из вашего репозитория CodeCommit в S3. Внесите изменения в файл, и конвейер должен автоматически запуститься снова.
Заключение
Хотя это одна из самых простых конфигураций, фундаментальные принципы остаются теми же, даже для очень сложных бэкенд-приложений. Возможно, потребуется больше этапов в конвейере, но базовый поток останется тем же. Единожды настроив конвейер развертывания и автоматизировав весь рабочий процесс, вы сэкономите много времени в долгосрочной перспективе, а отказ от ручных задач всегда означает большую безопасность и меньше человеческих ошибок.
Удачи в использовании ваших новых навыков DevOps!
Если у вас есть вопросы или пожелания, не стесняйтесь оставлять комментарии ниже.
Об авторах
Карл Эрикссон
Основатель инструмента для создания фиктивных API Mocki .
Связанные руководства