Опубликовано

Новинка: “Terraform. Сборник рецептов”

Terraform. Сборник рецептов

Практическое руководство по использованию Terraform для автоматизации облачной инфраструктуры. Книга построена по принципу сборника рецептов, где каждая задача рассматривается с объяснением «как» и «почему». Она подходит как для начинающих, помогая им освоить основы Terraform и концепции «инфраструктура как код», так и для опытных инженеров, предлагая продвинутые техники для работы с многооблачными средами, контейнерами и обеспечения защиты данных.  Основные темы: модули и провайдеры Terraform, управление контейнерами, централизованное управление через HCP Terraform и Terraform Enterprise, интеграция с CI/CD и реальные примеры развертывания на AWS, Kubernetes и других платформах.

Для начинающих и опытных DevOps-инженеров и архитекторов

Чтобы укротить хаос современной инфраструктуры, нужен современный и кардинальный  подход. Terraform даёт его. Эта книга — лучшее практическое руководство, которое превращает мощь инструмента в рабочие решения для реальных инженерных задач.
Крис Девер, технический специалист  компании EditShare

Эта книга — отличный настольный помощник, который поможет вам справиться с некоторыми сложными задачами.
Адам Макпартлан, ведущий консультант компании Hippo Digital

 

Инфраструктура как код

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

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

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

Рассматриваются следующие вопросы:

  • Стратегии использования Terraform с системами контроля версий (например, Git)
  • Шаблоны валидации и тестирования инфраструктуры для проверки изменений
  • Методы импорта уже существующих ресурсов из облачных консолей
  • Преобразование сервисов в повторно используемые компоненты (готовые модули)
  • Интеграция Terraform с другими инструментами HashiCorp (Vault, Consul)
  • Развертывание контейнеризированных рабочих нагрузок в Kubernetes
Taylor Dolezal

Долезал Тейлор (Taylor Dolezal) руководит отделом экосистемы в Cloud Native Computing Foundation (CNCF), курируя направления развития и партнерских отношений в сфере облачных вычислений.
В своей карьере Тейлор всегда выступал связующим звеном между сложными системами и человеческим восприятием, будь то обеспечение надежности технических объектов, разработка программного обеспечения или совместная работа над инновационными технологическими решениями. Когда Тейлор не занят работой с облачными технологиями, он исследует тропы в окрестностях Лос-Анджелеса, погружается в хорошую книгу и оптимизирует свой процесс подачи каламбуров для максимальной окупаемости инвестиций.

 

 

Kerim Satirli

Сатирли Керим (Kerim Satirli) занимает позицию ведущего адвоката разработчиков в HashiCorp, где специализируется на обучении операторов и разработчиков по созданию надежной инфраструктуры и эффективным методам оркестрации.
Прежде чем присоединиться к HashiCorp, Керим занимался промышленным IoT (Industrial Internet of Things — промышленный Интернет вещей) для аэропорта Амстердама, а также помогал музеям в оцифровке и размещении в Интернете своих коллекций. В свободное время Керим наслаждается общением с дочерью, увлекается аэрофотосъемкой и печет торты.

Книгу “Terraform. Сборник рецептов” можно купить в нашем интенет-магазине.

Предисловие…………………………………………………………………………………………….. 9

Для кого предназначена эта книга?…………………………………………………………………………………………… 9

Почему была написана эта книга?…………………………………………………………………………………………… 10

Краткий обзор глав……………………………………………………………………………………………………………………. 10

О чем эта книга…………………………………………………………………………………………………………………………… 11

Условные обозначения и соглашения……………………………………………………………………………………… 11

Примеры применения кода……………………………………………………………………………………………………….. 11

Платформа онлайн-обучения O’Reilly……………………………………………………………………………………… 12

Контактная информация…………………………………………………………………………………………………………… 13

Благодарности…………………………………………………………………………………………………………………………… 13

Глава 1. Подготовка к работе с Terraform……………………………………………… 15

1.1.   В каких случаях используется Terraform……………………………………………………………………….. 16

1.2.   В каких случаях не используется Terraform…………………………………………………………………… 17

1.3.   Установка и настройка Terraform…………………………………………………………………………………… 18

Установка Terraform в Linux……………………………………………………………………………………………. 18

Установка Terraform в macOS…………………………………………………………………………………………. 18

Установка Terraform в Windows………………………………………………………………………………………. 19

Установка OpenTofu…………………………………………………………………………………………………………. 19

1.4.   Провайдеры Terraform……………………………………………………………………………………………………… 21

1.5.   Модули Terraform…………………………………………………………………………………………………………….. 23

1.6.   Изменение состояния Terraform с помощью консоли terraform……………………………………. 24

1.7.   Применение облачной платформы HashiCorp Terraform……………………………………………… 25

1.8.   Совместное использование Terraform и Visual Studio Code………………………………………….. 27

1.9.   Управление ограничениями версий провайдеров Terraform………………………………………… 29

1.10. Алгоритм развертывания репозиториев кода с контролем версий Terraform…………….. 31

1.11. Развертывание контейнера Docker с помощью Terraform…………………………………………….. 32

1.12. Обновление Terraform: от 0.x до 1.x и выше…………………………………………………………………… 33

1.13. Использование переменных Terraform……………………………………………………………………………. 35

1.14. Консистентность кода для согласованного пользовательского опыта……………………….. 36

Глава 2. Основы Terraform……………………………………………………………………. 39

2.1.   Форматирование и проверка кода Terraform…………………………………………………………………. 39

2.2.   Быстрое тестирование с помощью консоли Terraform………………………………………………….. 40

2.3.   Повышение качества кода с помощью TFLint………………………………………………………………… 41

2.4.   Улучшение качества кода с помощью TFSec…………………………………………………………………. 42

2.5.   Проверка кода с помощью предусловий и постусловий……………………………………………….. 43

2.6.   Проверка кода с помощью Open Policy Agent…………………………………………………………………. 45

2.7.   Документирование кода с помощью terraform-docs………………………………………………………. 47

2.8.   Автоматизация проверки кода с помощью GitHub Actions…………………………………………… 49

2.9.   Обновление версии провайдера с помощью Dependabot……………………………………………… 50

2.10. Использование GitHub Codespaces и DevContainers……………………………………………………… 52

2.11. Ограничение Blast Radius с помощью Terraform……………………………………………………………. 56

Глава 3. Шаблоны синтаксиса Terraform………………………………………………. 60

3.1.   Очистка пользовательских данных с помощью trimspace…………………………………………….. 60

3.2.   Удаление префиксов и суффиксов…………………………………………………………………………………… 61

3.3.   Работа с регулярными выражениями……………………………………………………………………………… 62

3.4.   Расширенные операции со строками………………………………………………………………………………. 64

3.5.   Обработка строк с учетом регистра с помощью методов title, upper и lower………………. 65

3.6.   Сортировка списка по алфавиту……………………………………………………………………………………… 67

3.7.   Создание подсетей на основе CIDR-блока…………………………………………………………………….. 69

3.8.   Взаимодействие с локальной файловой системой…………………………………………………………. 71

3.9.   Рендеринг шаблонов…………………………………………………………………………………………………………. 73

3.10. Валидация входных строк……………………………………………………………………………………………….. 74

3.11. Эффективное извлечение данных с помощью can и try…………………………………………………. 76

3.12. Последовательная обработка входных данных……………………………………………………………. 79

3.13. Создание информативных сообщений об ошибках при некорректном вводе…………….. 82

3.14. Использование данных в различных состояниях Terraform…………………………………………. 85

Глава 4. Модули и провайдеры Terraform……………………………………………… 88

4.1.   Использование публичных модулей для создания эластичного кластера EKS…………. 88

4.2.   Линтинг Terraform с помощью GitHub Actions……………………………………………………………….. 92

4.3.   Аутентификация у провайдеров Terraform…………………………………………………………………….. 95

4.4.   Аутентификация приватных модулей…………………………………………………………………………….. 97

4.5.   Создание модуля Terraform……………………………………………………………………………………………… 99

4.6.   Управление секретами GitHub с помощью Terraform…………………………………………………. 102

4.7.   Управление репозиториями GitHub с помощью Terraform…………………………………………. 104

4.8.   Динамическая конфигурация с Consul KV……………………………………………………………………. 106

4.9.   Настройка провайдера с оповещением о работоспособности служб……………………….. 109

4.10. Использование состояния Terraform с помощью провайдеров………………………………….. 112

4.11. Использование нескольких одинаковых провайдеров………………………………………………… 114

Глава 5. Управление контейнерами с помощью Terraform………………….. 118

5.1.   Работа с локальными и удаленными образами Docker………………………………………………. 118

5.2.   Различие между развертыванием и конфигурацией кластера……………………………………. 120

5.3.   Авторизация Terraform для кластерных операций……………………………………………………… 122

5.4.   Планирование контейнеров на Kubernetes с помощью YAML…………………………………… 123

5.5.   Планирование контейнеров в Kubernetes с помощью HCL…………………………………………. 125

5.6.   Преобразование YAML Kubernetes в HCL с помощью k2tf………………………………………… 127

5.7.   Настройка аннотаций для развертывания Kubernetes………………………………………………… 128

5.8.   Настройка конфигурации развертывания Kubernetes…………………………………………………. 129

5.9.   Применение сетевых политик Kubernetes в Terraform…………………………………………………. 132

5.10. Развертывание контейнеров с помощью Helm…………………………………………………………….. 134

5.11. Мониторинг развертываний Kubernetes с помощью Helm………………………………………….. 137

5.12. Планирование контейнеров на HashiCorp Nomad………………………………………………………. 140

Глава 6. HCP Terraform и Terraform Enterprise……………………………………. 143

6.1.   Настройки HCP Terraform……………………………………………………………………………………………… 143

6.2.   Интеграция HCP Terraform с системой управления версиями (VCS)…………………………. 148

6.3.   Применение состояний Terraform в HCP Terraform…………………………………………………….. 150

6.4.   Интеграция HCP Terraform с GitHub Actions………………………………………………………………… 152

6.5.   Совместные рабочие процессы с использованием HCP Terraform……………………………. 154

6.6.   Устранение неполадок в HCP Terraform и Terraform Enterprise…………………………………. 156

6.7.   Реализация политики как кода………………………………………………………………………………………. 158

6.8.   Управление затратами с помощью HCP Terraform……………………………………………………… 160

6.9.   Использование удаленных операций для крупномасштабных развертываний……….. 163

6.10. Расширенные функции управления состоянием и восстановления……………………………. 166

Глава 7. Управление секретами при помощи Terraform………………………. 169

7.1.   Работа с конфиденциальными данными в Terraform…………………………………………………… 169

7.2.   Извлечение пар «ключ–значение» из хранилища HashiCorp Vault……………………………. 171

7.3.   Управление секретами Kubernetes с помощью нативных функций Kubernetes…………. 173

7.4.   Управление секретами Kubernetes с помощью Vault и Terraform………………………………. 176

7.5.   Хранение секретов в переменных среды………………………………………………………………………. 179

7.6.   Аудит и ротация секретов………………………………………………………………………………………………. 181

7.7.   Управление секретами в Terraform с помощью менеджеров паролей……………………….. 183

7.8.   Комплаенс и управление секретами в Terraform…………………………………………………………. 184

7.9.   Динамические секреты с помощью HashiCorp Vault…………………………………………………… 187

7.10. Обеспечение безопасности инжектирования секретов в конвейеры CI/CD………………. 189

Глава 8. Управление конфигурацией при помощи Terraform………………. 192

8.1.   Создание сценариев командной оболочки в Terraform………………………………………………. 192

8.2.   Создание конфигурации Ansible в Terraform………………………………………………………………… 194

8.3.   Динамическая конфигурация с помощью Consul KV…………………………………………………… 196

8.4.   Использование данных из HTTP-интерфейсов…………………………………………………………….. 198

8.5.   Применение условной логики в Terraform……………………………………………………………………. 199

8.6.   Импорт существующей инфраструктуры в Terraform…………………………………………………. 201

8.7.   Использование рабочих областей Terraform……………………………………………………………….. 203

8.8.   Использование шаблонов Terraform…………………………………………………………………………….. 205

8.9.   Управление зависимостями между ресурсами Terraform…………………………………………… 207

8.10. Реализация «сине-зеленых» развертываний с помощью Terraform……………………………. 209

Глава 9. Расширенные функции Terraform………………………………………….. 211

9.1.   Написание файлов конфигурации в Terraform…………………………………………………………….. 211

9.2.   Создание конфигурации Cloud-Init……………………………………………………………………………….. 213

9.3.   Внедрение модулей Terraform в конвейеры CI/CD……………………………………………………… 216

9.4.   Расширенное управление состоянием в Terraform………………………………………………………. 218

9.5.   Terraform в контексте мультиоблачных стратегий……………………………………………………… 221

9.6.   Работа в Terraform с масштабируемыми архитектурами…………………………………………… 223

9.7.   Создание пользовательских провайдеров Terraform………………………………………………….. 226

9.8.   Интеграция Terraform с инструментами мониторинга………………………………………………… 229

9.9.   Управление безопасностью и соблюдение нормативных требований в Terraform….. 234

9.10. Расширенные методы отладки в Terraform………………………………………………………………….. 238

Глава 10. Практические примеры использования………………………………… 242

10.1. Управление несколькими средами с помощью рабочих областей Terraform…………… 242

10.2. Развертывание высокодоступного веб-приложения в нескольких регионах…………….. 245

10.3. Создание масштабируемого кластера Kubernetes в AWS EKS…………………………………… 249

10.4. Реализация «сине-зеленых» развертываний с помощью Terraform……………………………. 252

10.5.   Автоматизация миграции баз данных с помощью Terraform и AWS RDS………………. 257

10.6.   Развертывание бессерверного приложения на AWS Lambda и API Gateway…………. 260

10.7.   Реализация инфраструктуры как кода для рабочих процессов GitOps…………………… 264

10.8.   Оптимизация затрат с помощью Terraform и Spot Instances…………………………………….. 267

10.9.   Развертывание системы многооблачного мониторинга с помощью Terraform………. 270

10.10. Автоматизация аварийного восстановления с помощью Terraform и AWS……………. 274

Предметный указатель…………………………………………………………………………. 279

Об авторах……………………………………………………………………………………………. 284

Об изображении на обложке………………………………………………………………… 285

Добавить комментарий