Terraform: инфраструктура как код
Соберёте инфраструктуру кодом и превратите её в рабочий процесс команды: состояние и дрейф инфраструктуры, модули с контрактами, окружения dev/prod, тесты конфигурации и пайплайн, который применяет только проверенный план. Лабораторные проверяются живым terraform в песочнице.
Чему вы научитесь
- Пройдёте полный цикл init → plan → apply → destroy и будете читать план и коды возврата как ревьюер
- Опишете инфраструктуру на HCL: переменные с типами и валидацией, локали, коллекции и выражения
- Свернёте десятки однотипных ресурсов в count, for_each и dynamic — и увидите на плане, почему for_each безопаснее
- Прочитаете state как файл: state list и show, дрейф через plan -refresh-only и -detailed-exitcode
- Отрефакторите живую конфигурацию без пересоздания ресурсов: state mv, блоки moved, import и removed
- Соберёте модуль с контрактом: типизированные входы с валидацией, outputs, README и тесты на модуль
- Разведёте dev и prod: workspaces, tfvars, бэкенды и terraform_remote_state для обмена данными между стеками
- Сгенерируете конфиги из шаблонов: templatefile с директивами %{for} и %{if}, cidrsubnet для сетей
- Укротите provisioners: local-exec под контролем triggers_replace, when = destroy и on_failure — и замените антипаттерны провижнеров штатными средствами
- Покроете конфигурацию проверками: preconditions, check-блоки и terraform test с expect_failures
Как устроено обучение
Каждая тема проходит один цикл: вы пишете конфигурацию, запускаете настоящий terraform, читаете его план и вывод — и проверка засчитывает результат по состоянию, а по ходу разбирается, чем оборачивается apply без прочитанного плана. Теория опирается на реальный вывод terraform и тексты его ошибок: диагностику plan вы учитесь читать до того, как она встретится в работе.
Песочница поднимается в браузере, ставить ничего не нужно. Практика построена на встроенном провайдере и работает без сети: облачный аккаунт не понадобится, счёт за облако по ходу курса не придёт. Примеры для AWS и Yandex Cloud идут в теории — от провайдеров до бэкендов S3/GCS/Yandex.
Итог курса — работающий каркас: связанные стеки с типизированными модулями, окружениями dev и prod, тестами и пайплайном. Он переносится на рабочие проекты вместе с вами.
О курсе
Terraform здесь — рабочий процесс команды, от первого init до пайплайна, который применяет только проверенный план. Курс строится вокруг одного правила: любое изменение инфраструктуры проходит через код, план и ревью.
Руками вы читаете и правите state, ловите дрейф, рефакторите конфигурацию через moved и import, не пересоздавая ресурсы, собираете модули с контрактами, разводите окружения через tfvars и бэкенды, пишете terraform test и доводите изменения до пайплайна с ревью плана.
Отдельный акцент — состояние. State разобран как главный источник инцидентов: что лежит в файле, как появляется дрейф, как переименовать ресурс без destroy, как забрать в управление то, что создано руками, и как командам не затирать состояние друг друга.
Каждая лабораторная проверяется живым terraform прямо в браузере: init, validate, plan, apply и terraform test отрабатывают в песочнице, и зачёт ставится по реальному состоянию, кодам возврата и содержимому плана.
После каждого модуля остаётся артефакт: конфигурация с валидацией, модуль с тестами, разведённые окружения, пайплайн. В капстоуне эти артефакты собираются в одну платформу — с общим пайплайном, ревью плана, применением и проверкой дрейфа.
Официальные туториалы Terraform доводят до работающих команд — дальше начинается разница, за которую вы платите: каждую лабораторную принимает живой terraform по состоянию и кодам возврата, state и рефакторинг через moved отработаны вашими руками, а после курса остаётся портфель — модуль с тестами, разведённые окружения, пайплайн и платформа из трёх стеков, — который переезжает в рабочий репозиторий.
Вы также можете задать любой вопрос по курсу у поддержки t.me/mentorix_support
Для кого этот курс
Правите инфраструктуру руками по тикетам и хотите, чтобы каждое изменение оставляло след в коде и проходило ревью до apply
Уже пишете Terraform по образцам из интернета, но state, дрейф и moved до сих пор выглядят опасной магией
Вам достался чужой terraform-репозиторий, и его страшно трогать: непонятно, что пересоздастся после apply
Готовитесь к собеседованию на DevOps- или платформенного инженера и хотите отвечать на «чем опасен count» и «как переименовать ресурс без destroy» из своей практики
Команда выросла, и пора развести dev и prod, договориться о процессе и перестать применять планы с ноутбука
Что нужно знать
Командная строка Linux: перейти в каталог, запустить команду, прочитать вывод
Общее представление об инфраструктуре: что такое сервер, сеть и база — глубокие знания облаков не нужны
Окружение не нужно: terraform работает в песочнице в браузере
Программа курса
Модулей: 12, уроков: 60. Задачи с кодом проверяются автоматически.
Старт: инфраструктура как код и первый проект
- Зачем инфраструктуре код: Terraform, его место и как устроен курс
- HCL: блоки, аргументы, выражения — синтаксис без догадок
- Цикл init → plan → apply → destroy и коды возврата
- Файлы проекта: .terraform, lock-файл, state, .gitignore
- Провайдеры и реестр: required_providers, версии, что в песочнице нельзя
Переменные, локали и типы
- Переменные: объявление, типы, значения по умолчанию и откуда они приходят
- Локали и выражения: условия, операторы, интерполяция
- Коллекции: list, map, set, object, tuple и как к ним обращаться
- Функции и terraform console: строки, коллекции, кодирование
- Валидация переменных, sensitive и защита от неверного ввода
Ресурсы, зависимости и жизненный цикл
- Адреса ресурсов и граф зависимостей: implicit, depends_on, graph
- count и for_each: несколько экземпляров и почему for_each безопаснее
- for-выражения и dynamic: списки, карты, фильтры, группировка
- lifecycle: create_before_destroy, prevent_destroy, ignore_changes, replace_triggered_by
- Data sources и outputs: читать чужое, отдавать своё
Состояние: state, дрейф, рефакторинг, импорт
- Что такое state: структура файла, state list/show, show -json
- Дрейф и refresh: plan -refresh-only, -detailed-exitcode, что значит «no changes»
- Рефакторинг без пересоздания: state mv и блоки moved
- Импорт существующего: блок import, terraform import, генерация конфигурации
- Удаление из управления: блок removed, state rm, -target и когда это допустимо
Модули: переиспользование и композиция
- Анатомия модуля: source, входы, выходы, path.module
- Контракт модуля: variables с типами и валидацией, outputs, README
- Композиция: модули в модулях, for_each по модулям, depends_on
- Источники модулей и версии: registry, git, локальные, pinning
- Практика модуля: стандартная структура, examples, тесты на модуль
Окружения и бэкенды
- Workspaces: несколько состояний одной конфигурации
- Окружения через tfvars и структуру каталогов
- Бэкенды: local, remote, S3/GCS/Yandex; partial configuration
- terraform_remote_state: обмен данными между стеками
- Командная работа: блокировки, serial, конфликты и правила процесса
Шаблоны и продвинутые функции
- templatefile: генерация конфигов с директивами %{for} и %{if}
- Строки и регулярные выражения: format, regex, replace, split
- Коллекции: merge, zipmap, setproduct, flatten, lookup, try
- Типы: type constraints, optional(), объектные схемы, преобразования
- Сетевые и числовые функции: cidrsubnet, cidrhost, range, min/max
Provisioners и внешние команды
- local-exec: когда провижнер оправдан и как им не злоупотреблять
- Порядок и повтор: triggers_replace, when = destroy, on_failure
- remote-exec, file и подключение connection: теория для облаков
- Генерация артефактов: templatefile + local-exec, jsonencode для конфигов
- Антипаттерны провижнеров и что использовать вместо них
Проверки и тесты конфигурации
- Preconditions и postconditions: контракты на ресурсах и outputs
- check-блоки: проверки, которые не ломают apply
- terraform test: файлы .tftest.hcl, run, assert, variables
- Тесты на ошибки: expect_failures, тестирование модулей, module-блок в тестах
- Пирамида проверок Terraform: fmt → validate → test → plan-ревью → check
Безопасность и качество кода
- Секреты: sensitive, state как источник утечки, переменные окружения
- fmt, validate и линтеры в pre-commit и CI
- Соглашения: имена, теги, структура репозитория, документация
- Версионирование: required_version, ограничения провайдеров, lock-файл, обновления
- Ревью плана: читать plan, show -json, планы как артефакты
Terraform в CI/CD
- Пайплайн: fmt → validate → plan → ревью → apply, и режим автоматизации
- GitLab CI и GitHub Actions для Terraform: настоящие конфиги
- Планы как артефакты и вывод в JSON для автоматики
- Дрейф-детект и расписание: plan -detailed-exitcode в cron/CI
- Несколько стеков в одном пайплайне: порядок, зависимости, откат
Капстоун: платформа из трёх стеков
- Техническое задание: платформа, требования, разбиение на стеки
- Стек app: модуль service, for_each, remote_state, валидация
- Окружения: dev и prod через tfvars, различия и общее
- Тесты и проверки: terraform test на модуль и стек, check-блоки мониторинга
- Финальный прогон: пайплайн трёх стеков, ревью плана, разбор решения
Стоимость курса: 12990 ₽
Открыть курс на Mentorix · Все курсы