Инфраструктура через 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
Материалы основного пути
- Terraform: What is it?
- Начать здесь. providers, resources, state, plan/apply lifecycle
- HashiCorp Terraform Tutorials
- Практика. 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
Справочники и дополнительные материалы
- Yandex Cloud: архитектура платформы
Обязательно. regions, zones, failure domains и platform architecture
Справочник. service limits, topology и resilience decisions
- FinOps Framework
Дополнительно. allocation, accountability и cost optimization loop
- Основы работы с Yandex Cloud
Начать здесь. выбранный YC-трек: IAM, networking, compute и storage
Вариант · Трек 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
Справочники и дополнительные материалы
- Основы архитектуры Azure
Справочник. architecture styles, design principles и service choices
- Azure Fundamentals: облачные концепции
Начать здесь. выбранный Azure-трек: cloud concepts, architecture и management
- Azure Well-Architected Framework
Обязательно. reliability, security, cost, operations и performance pillars
Практика
Продолжить выбранный в 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
Альтернатива. Выберите OpenTofu вместо Terraform, если он подходит провайдеру; изучите language, state и CLI workflow. Оба инструмента одновременно не требуются.
- Terraform Best Practices
Справочник. structure, naming, remote state и environments