Terraform: инфраструктура на уровне кода | страница 98
Разработка модулей
Управление версиями модулей отлично подходит, когда развертывание происходит в общем окружении (тестовом или промышленном), но, если вы просто занимаетесь тестированием на собственном компьютере, лучше использовать локальные файловые пути. Это ускорит разработку, поскольку после внесения изменений в код модулей вы сможете сразу же выполнить команду apply в активных папках, без фиксации своего кода и публикации новой версии.
Цель этой книги — сделать процесс изучения и экспериментирования с Terraform максимально быстрым, поэтому в остальных примерах модули будут использовать локальные файловые пути.
Резюме
Описывая IaC в виде модулей, вы получаете возможность использовать в своей инфраструктуре разнообразные рекомендуемые методики программирования: разбирать и тестировать каждое изменение, вносимое в модуль; создавать для каждого модуля выпуски с семантическими версиями; безопасно экспериментировать с разными версиями модулей в разных окружениях и в случае какой-то проблемы откатиться к предыдущему выпуску.
Все это может существенно помочь в построении инфраструктуры быстрым и надежным образом, поскольку разработчики смогут повторно использовать ее компоненты, которые были как следует проверены и задокументированы. Например, вы можете создать канонический модуль, который описывает процесс развертывания одного микросервиса, включая то, как запускать кластер, масштабировать его в зависимости от нагрузки и распределять запросы между серверами. Затем каждая команда сможет применять этот модуль для управления собственными микросервисами, и для этого будет достаточно лишь нескольких строчек кода.
Чтобы такой модуль подошел сразу нескольким командам, его код должен быть гибким и конфигурируемым. Например, одна команда может использовать его для развертывания одного экземпляра своего микросервиса без балансировщика нагрузки, а другой может понадобиться десяток экземпляров с распределением трафика между ними. Как в Terraform записать условные выражения? Можно ли выполнить цикл for? Можно ли с помощью Terraform выкатывать изменения в микросервисы без простоя? Этим углубленным аспектам синтаксиса Terraform посвящена глава 5.
44 Все подробности о URL-адресах источников можно найти на странице bit.ly/2TaXmZF.
45 Хорошее руководство по работе с SSH-ключами можно найти по адресу bit.ly/2ZFLJwe.
5. Работа с Terraform: циклы, условные выражения, развертывание и подводные камни