Обложка статьи «Настраиваем инфраструктуру как код: чек-лист для DevOps-инженеров на примере AWS CloudFormation»

Настраиваем инфраструктуру как код: чек-лист для DevOps-инженеров на примере AWS CloudFormation

Решили попробовать силы в разработке под AWS CloudFormation? Или уже пишете код и хотите повысить эффективность работы? Вот исчерпывающий план, c которым вы не упустите ни одного важного аспекта разработки под AWS CloudFormation.

Примечание Все ресурсы, на которые ведут ссылки, англоязычные.

Перед началом работы

Используйте готовые шаблоны

Нет нужды изобретать велосипед. В этих источниках открытого исходного кода вы сможете найти шаблоны, подходящие для вашего проекта:

Разработка кода

Установите локальные DevOps-инструменты

Установив их на своей рабочей станции, вы повысите эффективность работы:

Выберите формат YAML, а не JSON

YAML лаконичнее, его проще читать и к тому же он поддерживает комментирование.

Используйте готовые сниппеты

Постарайтесь отказаться от метода проб и ошибок, ведь сниппеты для CloudFormation доступны на AWS и GitHub.

Распределите стеки в соответствии с этапами разработки и принадлежностью

Не создавайте несколько громоздких стеков, раскидайте ресурсы по множеству более мелких.

Используйте межстековые ссылки для доступа к общим ресурсам

Уменьшайте непроизводительные издержки при работе стеков.

Используйте шаблоны повторно при сходных задачах

Создавайте шаблоны, которые впоследствии сможете использовать ещё раз, например, для репликации стеков в нескольких средах.

Применяйте при разработке кода типы параметров, специфичные для AWS

Пригодится для базовой проверки и обращения к определённым переменным.

Используйте ограничения параметров

Не забывайте, что пользователь может ввести данные, которые не обрабатываются вашим приложением.

Применяйте AWS::CloudFormation::Init для развёртывания приложений на базе Amazon EC2

Сделайте процесс развёртывания декларативным, вместо того чтобы прописывать его шаг за шагом.

Попробуйте поработать с консольными командами, прежде чем генерировать сниппеты и шаблоны

Для того чтобы получить верные определения ресурсов, потребуются соответствующие инструменты.

Проверяйте политики управления жизненными циклами ресурсов

Будьте готовы к тому, что в определённый момент CFN может заменить ваши ресурсы.

Используйте больше сторонних ресурсов для автоматизации инфраструктуры

Возможно, AWS пока не сможет обработать всё необходимое с помощью CFN.

Внедряйте в свой код макросы

Макросы позволят уменьшить повторы кода, кастомизировать поиск элементов, добавить произвольный код, изменяющий шаблоны, и многое другое.

Безопасность

Ограничьте допуски в AIM

Выдавайте пользователям только те разрешения, которые им требуются для работы с CloudFormation.

Создавайте шаблоны без вшитых реквизитов

Не оставляйте в шаблонах потенциально опасную информацию, используйте для её передачи вводные параметры.

Проводите статический анализ шаблонов с помощью cfn_nag

Этот инструмент содержит более 45 правил для обнаружения потенциально уязвимой инфраструктуры и настроек.

Наработанные методики

Воспользуйтесь передовыми разработками, которые позволят решить большую часть ваших рутинных задач:

Другие методики

Сообщество выработало некоторые полезные приёмы, которые стоит использовать.

Администрирование

Управляйте всеми ресурсами стека только через AWS CloudFormation

Если не соблюдать это правило, могут возникнуть ошибки. Их вызывает несовпадение шаблонов и реального состояния стека ресурсов.

Создавайте сеты изменений стека перед непосредственным внесением корректировок

Чтобы избежать проблем при обновлении стека, изучите, как предполагаемые изменения повлияют на содержащиеся в нём ресурсы.

Разрабатывайте наборы правил для стеков

Защитите важнейшие ресурсы в стеке от ненужного обновления.

Используйте AWS CloudTrail для журналирования обращений к AWS CloudFormation

Поможет отслеживать и проверять вызовы API.

Применяйте модули запуска CFN, такие как Sceptre

Sceptre позволяет масштабировать шаблоны для использования нескольких аккаунтов и в разных регионах.

Используйте автоматическую диагностику смещения

Пригодится для определения инициированных извне неуправляемых изменений.

Команда

Используйте разборы кода и контроль ревизий при работе над шаблонами

Поделитесь кодом с командой и выслушайте предложения.

Поделитесь с коллегами этим планом

Попросите коллег держать его под рукой.

Тестирование

Проверьте квоты для всех типов ресурсов

В противном случае вы можете столкнуться с ограничениями AWS API при развёртывании CFN.

Оцените работоспособность шаблонов перед их использованием

Устранение синтаксических и семантических ошибок сбережёт вам время.

Проверьте, соблюдаются ли стандарты стиля кода

Соблюдение стандартов стиля поможет быстро обнаружить опечатки, проконтролировать работоспособность, следование установившимся методикам и т. д.

Протестируйте работоспособность шаблонов в подходящих регионах с помощью TaskCat

TaskCat разворачивает ваши шаблоны CloudFormation в различных регионах AWS и создаёт отчёт типа pass/fail для каждого из них.

Адаптация статьи «Show Reddit: CloudFormation Checklist»

Хинт для программистов: если зарегистрироваться на соревнования Huawei Honor Cup, бесплатно получите доступ к онлайн-школе для участников. Можно прокачаться по разным навыкам и выиграть призы в самом соревновании. Перейти к регистрации.