Terraform: инфраструктура на уровне кода | страница 84
41 На странице golang.org/pkg/fmt/ можно найти документацию для синтаксиса sprintf.
42 На странице bit.ly/2GNCxOM представлен полный список встроенных функций.
43 Подробнее о защитных механизмах в ПО можно почитать по адресу bit.ly/2YJuqJb.
4. Повторное использование инфраструктуры с помощью модулей Terraform
В конце главы 3 вы развернули архитектуру, показанную на рис. 4.1.
Рис. 4.1. Балансировщик нагрузки, кластер веб-серверов и база данных
Это хорошо работает в качестве первой среды, но их обычно нужно как минимум две: одна для финального тестирования внутри команды, а другая, промышленная, — для обслуживания реальных пользователей (рис. 4.2). В идеале обе среды должны быть почти идентичными, хотя, чтобы сэкономить, для среды финального тестирования важно инициализировать чуть меньше серверов (или серверы меньшего размера).
Рис. 4.2. Две среды, каждая со своим балансировщиком нагрузки, кластером веб-серверов и базой данных
Как добавить эту промышленную среду без копирования всего кода из среды тестирования? Например, как избежать дублирования всего содержимого stage/services/webserver-clusterиstage/data-stores/mysql в prod/services/webserver-cluster и соответственно prod/data-stores/mysql?
В языках общего назначения, таких как Ruby, код, который копируется и вставляется в нескольких местах, можно оформить в виде функции и использовать в других частях программы:
def example_function()
puts "Hello, World"
end
# Другие участки вашего кода
example_function()
Terraform позволяет поместить код внутрь модуля, который можно будет повторно применять на разных участках вашей конфигурации. Вместо того чтобы копировать и вставлять код в тестовой и промышленной средах, мы сделаем так, чтобы обе среды использовали код из одного и того же модуля, как показано на рис. 4.3.
Рис. 4.3. Поместив код в модуль, вы сможете применить его повторно в разных окружениях
Это очень важно. Модули являются ключевым аспектом написания универсального кода Terraform, который легко поддерживать и тестировать. Начав их использовать, вы уже не сможете без них обойтись. Вы начнете оформлять все в виде модулей, объединять их в библиотеки для удобного использования в компании, загружать сторонние модули из Интернета и воспринимать всю свою инфраструктуру как набор универсальных модулей.
В этой главе я покажу, как создавать и применять модули Terraform. Мы рассмотрим такие темы.
• Основные характеристики модулей.