Читаем Terraform: инфраструктура на уровне кода полностью

После того как вы тщательно проверили версию v0.0.2 и убедились в ее корректности в тестовой среде, можете обновить и промышленное окружение. Но если в v0.0.2 обнаружится ошибка, это не составит большой проблемы, поскольку пользователи реальной системы не будут затронуты. Исправьте ошибку, выпустите новую версию и повторите весь процесс заново, пока ваш модуль не станет достаточно стабильным для промышленного применения.

Разработка модулей

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

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

Резюме

Описывая IaC в виде модулей, вы получаете возможность использовать в своей инфраструктуре разнообразные рекомендуемые методики программирования: разбирать и тестировать каждое изменение, вносимое в модуль; создавать для каждого модуля выпуски с семантическими версиями; безопасно экспериментировать с разными версиями модулей в разных окружениях и в случае какой-то проблемы откатиться к предыдущему выпуску.

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

Чтобы такой модуль подошел сразу нескольким командам, его код должен быть гибким и конфигурируемым. Например, одна команда может использовать его для развертывания одного экземпляра своего микросервиса без балансировщика нагрузки, а другой может понадобиться десяток экземпляров с распределением трафика между ними. Как в Terraform записать условные выражения? Можно ли выполнить цикл for? Можно ли с помощью Terraform выкатывать изменения в микросервисы без простоя? Этим углубленным аспектам синтаксиса Terraform посвящена глава 5.

44 Все подробности о URL-адресах источников можно найти на странице bit.ly/2TaXmZF.

45 Хорошее руководство по работе с SSH-ключами можно найти по адресу bit.ly/2ZFLJwe.

5. Работа с Terraform: циклы, условные выражения, развертывание и подводные камни

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

Например, как повторить какой-то элемент бизнес-логики, в частности создание нескольких похожих ресурсов, без дублирования кода, учитывая, что у декларативных языков обычно нет цикла for? И если декларативный язык не поддерживает выражения if, как сконфигурировать ресурсы условным образом: скажем, написать модуль Terraform, который умеет создавать определенные ресурсы только для некоторых пользователей? И как в декларативном языке выразить сугубо процедурную концепцию, такую как развертывание с нулевым временем простоя?

К счастью, Terraform предоставляет несколько элементов языка, которые позволят вам выполнять определенные виды циклов, условных выражений и развертываний. Речь идет о метапараметре count, выражениях for_each и for, блоке жизненного цикла под названием create_before_destroy, тернарном операторе и большом количестве функций. Эта глава охватывает следующие темы.

• Циклы.

• Условные выражения.

• Развертывание с нулевым временем простоя;

• Подводные камни Terraform.

Примеры кода

Напоминаю: все примеры кода для этой книги можно найти по адресу github.com/brikis98/terraform-up-and-running-code.

Циклы

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

• Параметр count для циклического перебора ресурсов.

• Выражение for_each для циклического перебора ресурсов и их вложенных блоков.

• Выражение for для циклического перебора списков и ассоциативных массивов.

• Строковая директива for для циклического перебора списков и ассоциативных массивов внутри строк.

Рассмотрим их одну за другой.

Циклы с параметром count

Перейти на страницу:

Все книги серии Бестселлеры O'Reilly

Искусство управления IT-проектами
Искусство управления IT-проектами

В отличие от множества трудов, посвященных руководству проектами и командами, в этой книге не проповедуются никакие новые учения и не превозносятся великие теории. Скотт Беркун считает залогом успеха практику и разнообразие подходов. В книге описываются основные сложности и проблемные ситуации, возникающие в работе менеджера проекта, даны рекомендации по выходу из них.Издание предназначено не только для лидеров команд и менеджеров высшего звена, но и для программистов, тестеров и других исполнителей конкретных проектных заданий. Также оно будет полезно студентам, изучающим бизнес-менеджмент, проектирование изделий или программную инженерию.Текст нового издания значительно переработан автором с целью добиться большей ясности, кроме того, книга дополнена новым приложением и более чем 120 практическими упражнениями.

Скотт Беркун

Деловая литература
iOS. Приемы программирования
iOS. Приемы программирования

Книга, которую вы держите в руках, представляет собой новый, полностью переписанный сборник приемов программирования по работе с iOS. Он поможет вам справиться с наболевшими проблемами, с которыми приходится сталкиваться при разработке приложений для iPhone, iPad и iPod Touch. Вы быстро освоите всю информацию, необходимую для начала работы с iOS 7 SDK, в частности познакомитесь с решениями для добавления в ваши приложения реалистичной физики или движений — в этом вам помогут API UIKit Dynamics.Вы изучите новые многочисленные способы хранения и защиты данных, отправки и получения уведомлений, улучшения и анимации графики, управления файлами и каталогами, а также рассмотрите многие другие темы. При описании каждого приема программирования приводятся образцы кода, которые вы можете смело использовать.

Вандад Нахавандипур

Программирование, программы, базы данных / Программирование / Книги по IT

Похожие книги