[Terraform] Рабочий процесс развертывания кода инфраструктуры (2)

DevOps облачные вычисления
[Terraform] Рабочий процесс развертывания кода инфраструктуры (2)

Мало знаний, большой вызов! Эта статья участвует в "Необходимые знания для программистов«Творческая деятельность.
Эта статья также участвует"Проект "Звезда раскопок"", чтобы выиграть творческие подарочные пакеты и бросить вызов творческим поощрениям.

3. Запустите код локально

Для кода приложения мы можем легко построить среду локально и смоделировать реальные бизнес-сценарии для тестирования.Конечно, для кода, связанного с инфраструктурой, мы не можем создавать вычислительные экземпляры и экземпляры базы данных локально. Однако для обеспечения надежности и безопасности производственной среды необходимо провести тестирование перед официальным развертыванием.Terraform, единственный способ, которым мы можем проверить это вручную, этозапустить его в среде песочницы.

Так называемая среда песочницы, например, подача заявки на учетную запись для работы с облачными ресурсами, предназначенная для разработки, а затем выполнение соответствующих действий.applyоперации и, наконец, использоватьCurlПодождите, пока инструменты не проверят успешность развертывания.

4. Внесите изменения в код и отправьте отзывы

внести изменения в кодРазумеется, речь идет об итеративном изменении кода, после которого необходимо развернуть проверочный тест. В этой части подчеркивается, как сэкономить время проверки в процессе проверки? Основная цель состоит в том, чтобы не выполнять полноэтапную проверку, а проверять выборочно. Например, вы можете выборочно не создавать ресурсы или уничтожать ресурсы, а только развертывать на уровне приложения. Таким образом, время обратной связи может быть значительно сокращено и эффективность можно повысить..

Отправить код и просмотретьЗа этой частью контента следят многие группы разработчиков при разработке кода приложения.pull requestВыполните проверку кода. В командных операциях все должны соблюдать один и тот же набор правил кодирования и стилей кода, чего можно достичь с помощью проверок кода.

5. Автоматизированное тестирование

Как и в случае с кодом приложения, использование автоматизированных тестов может обеспечить непрерывную интеграцию (CI). То есть, перехватывая сценарий, автоматический процесс тестирования на сервере CI запускается после каждой отправки, иpull requestРезультат проверки отображается в запросе. Для этого нам нужно сделать две вещи:

  • Написание модульных тестов, интеграционных тестов и сквозных тестов для кода Terraform.
  • использоватьAtlantisИнструмент с открытым исходным кодом, который запускается автоматически при фиксации кодаterraform planи добавьте вывод команды plan в комментарии запроса на вытягивание.

6. Слияние и выпуск

Когда изменения кода и запланированные результаты проверяются членами команды, и все тесты завершены. Вы можете объединить изменения в основную ветку и опубликовать код. Как и в случае с кодом приложения, выпущенную версию можно создать с помощью тегов Git.

Поскольку Terraform поддерживает загрузку кода непосредственно из репозиториев Git, состояние репозитория для определенного тега представляет собой неизменяемый артефакт с контролируемой версией, который будет развернут.

7. Развертывание

После написания вышеуказанного кода, контроля версий, проверки и автоматического тестирования начинается развертывание. развертыватьTerraformКод имеет некоторые оптимизации и соображения, чтобы сделать его более эффективным.

7.1 Инструменты развертывания

Terraform сам по себе является инструментом, но он имеет ограничения в некоторых аспектах, и некоторые инструменты развертывания включают Atlantis (для запросов на вытягивание), Terraform Enterprise (предоставляет пользовательский интерфейс, управляет переменными, секретами и правами доступа), Terragunt (расширения развертывания). Даже сценарии могут лучше улучшить общий процесс управления развертыванием.

7.2 Стратегия развертывания

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

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