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

И передайте важные выходные параметры из asg-rolling-deploy и alb в качестве вывода модуля hello-world-app:

output "alb_dns_name" {

  value       = module.alb.alb_dns_name

  description = "The domain name of the load balancer"

}

output "asg_name" {

  value       = module.asg.asg_name

  description = "The name of the Auto Scaling Group"

}

output "instance_security_group_id" {

  value       = module.asg.instance_security_group_id

  description = "The ID of the EC2 Instance Security Group"

}

Это композиция функций в действии: вы выстраиваете сложное поведение (приложение Hello, World) из более простых частей (модули ASG и ALB). В Terraform часто можно встретить как минимум два типа модулей.

Обобщенные модули. Такие модули, как asg-rolling-deploy и alb, являются базовыми составными блоками вашего кода, которые можно использовать во множестве разных сценариев. Вы видели, как с их помощью развертывается приложение Hello, World, но те же модули можно применить, к примеру, чтобы развернуть ASG для запуска кластера Kafka или полностью автономного экземпляра ALB, способного распределять нагрузку между разнообразными приложениями. Использовать один балансировщик для всех приложений сразу будет дешевле, чем выделять для каждого из них по одному ALB.

Узкоспециализированные модули. Модули вроде hello-world-app сочетают в себе несколько обобщенных модулей с расчетом на один конкретный сценарий использования, скажем, развертывание приложения Hello, World.

В реальной работе вам, возможно, придется дробить свои модули еще сильнее, чтобы улучшить композицию и повторное применение. Например, вы можете применять коллекцию открытых, универсальных модулей из репозитория terraform-aws-consul (http://bit.ly/33hhOwr) для работы с HashiCorp Consul. Consul — это открытое, распределенное хранилище типа «ключ — значение», которому иногда нужно прослушивать сетевые запросы на множестве разных портов (серверные RPC, CLI RPC, Serf WAN, HTTP API, DNS и т. д.), поэтому оно обычно требует около 20 групп безопасности. В репозитории terraform-aws-consul правила этих групп описываются в отдельном модуле consul-security-group-rules (http://bit.ly/31oo5oc).

Чтобы понять, зачем это нужно, можно сначала посмотреть на то, как развертывается система Consul. Ее часто развертывают в качестве хранилища данных для HashiCorp Vault, открытого распределенного хранилища конфиденциальной информации, в котором можно безопасно размещать пароли, API-ключи, сертификаты TLS и т. д. В репозитории terraform-aws-vault (http://bit.ly/2MM6AKn) можно найти коллекцию открытых универсальных модулей для работы с Vault. Там же представлена диаграмма, на которой изображена типичная промышленная архитектура для этой системы (рис. 6.3).

В промышленных условиях Vault обычно запускается в одной группе ASG, состоящей из 3–5 серверов (развернутых с помощью модуля vault-cluster (http://bit.ly/2TngRON), а Consul — в другой, тоже с 3–5 серверами (развернутыми с модулем consul-cluster (http://bit.ly/2YQXIWe), поэтому каждую из этих систем можно масштабировать и защищать по отдельности. Однако в ­тестовом окружении ­запуск такого количества серверов будет излишним, поэтому, чтобы сэкономить, Vault и Consul лучше запускать в одной группе ASG, состоящей, скажем, из одного сервера и развернутой с использованием модуля vault-cluster. Если бы все правила группы безопасности Consul были описаны в модуле consul-cluster, вы бы не смогли применять их повторно (разве что вы вручную скопируете 20 с лишним правил) при развертывании Consul с модулем vault-cluster. Но, поскольку правила описаны в отдельном модуле, consul-security-group-rules, вы можете подключить их к vault-cluster или к кластеру почти любого другого типа.

Рис. 6.3. Архитектура HashiCorp Vault и Consul

Для простого приложения вроде Hello, World такого рода разбиение будет чрезмерным, но, если вы имеете дело с настоящей сложной инфраструктурой, выделение правил группы безопасности, политик IAM и других сквозных элементов в отдельные автономные модули — часто необходимый шаг для поддержки разных методик развертывания. Мы их использовали не только для Consul и Vault, но и для стека ELK (в промышленной среде мы запускали Elasticsearch, Logstash и Kibana в отдельных кластерах, а в тестовой — в одном и том же), Confluent Platform (в промышленной среде мы запускали Kafka, ZooKeeper, REST Proxy и Schema Registry в отдельных кластерах, а в тестовой — в одном и том же), стека TICK (в промышленной среде мы запускали Telegraf, InfluxDB, Chronograf и Kapacitor в отдельных кластерах, а в тестовой — в одном и том же) и т. д.


Тестируемые модули

Вы уже написали довольно много кода в виде трех модулей: asg-rolling-deploy, alb и hello-world-app. Теперь нужно убедиться, что этот код и правда работает.

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

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

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

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

Скотт Беркун

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

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

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

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

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

Старший брат следит за тобой. Как защитить себя в цифровом мире
Старший брат следит за тобой. Как защитить себя в цифровом мире

В эпоху тотальной цифровизации сложно представить свою жизнь без интернета и умных устройств. Но даже люди, осторожно ведущие себя в реальном мире, часто недостаточно внимательно относятся к своей цифровой безопасности. Между тем с последствиями такой беспечности можно столкнуться в любой момент: злоумышленник может перехватить управление автомобилем, а телевизор – записывать разговоры зрителей, с помощью игрушек преступники могут похищать детей, а к видеокамерам можно подключиться и шпионить за владельцами. Существуют и государственные проекты наподобие «Умного города», подразумевающие повсеместное внедрение видеокамер и технологий распознавания лиц.Все это не значит, что нужно стремиться к цифровому затворничеству и панически избегать гаджетов, но необходимо изучить и соблюдать элементарные правила безопасности. Михаил Райтман в своей книге рассказывает, как максимально снизить вероятность утечки персональных данных, осложнив задачу потенциальным злоумышленникам.

Михаил Анатольевич Райтман

Зарубежная компьютерная, околокомпьютерная литература
Восстановление данных на 100%
Восстановление данных на 100%

В книге изложены методы восстановления данных с различных носителей информации – жестких дисков, массивов RAID, CD, DVD, карт флэш-памяти, карт фотоаппаратов и мобильных телефонов. Ремонт поврежденного оборудования рассматривается в издании только как один из аспектов всего процесса извлечения данных. Основная тема – извлечение данных, поврежденных из-за физических или логических нарушений в работе компьютерной системы либо неверных действий пользователя. В книге рассматривается восстановление случайно удаленных файлов, извлечение ценной информации с поломанных жестких дисков; описываются программы и методика восстановления данных с поврежденных массивов RAID, что критически важно для работы корпоративных компьютерных систем.Книга не требует специальной подготовки читателя: простые пошаговые процедуры восстановления данных предваряются описанием принципов их хранения на различных носителях.

Петр Андреевич Ташков

Зарубежная компьютерная, околокомпьютерная литература / Прочая компьютерная литература / Книги по IT