← Все этапы маршрута

Инфраструктура через API и state · R10

R10. Terraform или OpenTofu

Цель

Описывать инфраструктуру декларативно, осознанно работать с plan/state/drift и не хранить секреты в Git.

Что освоить

  • resource, data source, variable и output
  • plan, apply и destroy
  • state, locking и remote backend
  • drift, import и modules
  • versions и environment separation

Материалы основного пути

  1. Terraform: What is it? EN · Документация
    • Начать здесь. providers, resources, state, plan/apply lifecycle
  2. HashiCorp Terraform Tutorials EN · Тренажёр
    • Практика. Get Started + modules + tests для выбранного provider
    • Дополнительно. drift, import и policy/testing после MVP

Выберите один облачный вариант

Для прохождения маршрута достаточно одного провайдера. Этапы R9 и R10 используют тот же выбор.

Вариант · Трек YC

Yandex Cloud

Модель доступа: cloud → folder → service account → роли IAM

В R10 использовать Terraform/OpenTofu с провайдером yandex: сеть, compute и storage из кода, plan в CI и защищённый state.

Проверка: Показать traffic/data flow, объяснить каждую IAM-роль, восстановить backup и повторно создать стенд только из IaC.

До запуска составьте список платных ресурсов, допустимую сумму и настройте уведомления. Budget alert сам по себе не останавливает расходы. После работы удалите стенд, проверьте диски, адреса, snapshots и другие остатки; повторно проверьте начисления после обновления billing data.

Основной материал: Terraform в Yandex Cloud RU · Документация

Справочники и дополнительные материалы

Вариант · Трек Azure

Microsoft Azure

Модель доступа: tenant → subscription → resource group → Entra ID/RBAC

В R10 использовать Terraform/OpenTofu с провайдером azurerm: resource group, network, compute и storage из кода, plan в CI и защищённый state.

Проверка: Показать traffic/data flow, объяснить назначения RBAC, восстановить backup и повторно создать стенд только из IaC.

До запуска составьте список платных ресурсов, допустимую сумму и настройте уведомления. Budget alert сам по себе не останавливает расходы. После работы удалите стенд, проверьте диски, адреса, snapshots и другие остатки; повторно проверьте начисления после обновления billing data.

Основной материал: Установка и настройка Terraform для Azure RU · Документация

Справочники и дополнительные материалы

Практика

Продолжить выбранный в R9 трек без смены провайдера: VPC/VNet, compute и storage из кода; remote state; CI выполняет fmt, validate и plan. Зафиксируйте CLI, provider versions и lockfile; state и plan считайте чувствительными данными, храните вне Git с ограничением доступа и защитой backend.

Проверьте результат

Provider-specific стенд выбранного трека воспроизводится без ручных кликов; state защищён; вы находите drift и умеете import/destroy/recreate.

Вопросы, условия приёмки и доказательства

Ответьте и покажите

  • Почему state содержит чувствительные данные?
  • Как plan отличает drift от желаемого изменения?

Условия приёмки

  • Provider совпадает с R9
  • fmt/validate/plan gates проходят
  • State protected; drift/import/destroy/recreate доказаны

Учебный отказ: Изменить один ресурс вручную и безопасно вернуть declarative state; отдельно имитировать state lock conflict.

Артефакт: IaC-репозиторий + CI plan + state/drift/recreate transcript

Provider из R9 не изменён; fmt/validate/plan проходят; state не в Git и защищён; drift найден; destroy/recreate выполнены без ручных кликов.

Хорошее доказательство: Repo/module + CI plan + redacted state backend settings + drift/recovery transcript.

Недостаточно: terraform.tfstate или secrets в Git, локальный state без locking и apply без review plan.

Углубление и справочные материалы

Темы для углубления

  • module contracts и testing
  • state recovery/locking
  • policy as code и controlled drift

Вынести reusable module, добавить static/test/plan gates и безопасно отработать drift, import и восстановление state.

Результат: Module versioned и документирован; concurrent apply блокируется; state recovery и drift correction доказаны на копии.

Дополнительные материалы

  • OpenTofu documentation EN · Документация

    Альтернатива. Выберите OpenTofu вместо Terraform, если он подходит провайдеру; изучите language, state и CLI workflow. Оба инструмента одновременно не требуются.

  • Terraform Best Practices EN · Книга

    Справочник. structure, naming, remote state и environments