Урок 07. Infrastructure as Code: Terraform + AWS

📁 Блок: Облако и AWS ⏱️ Время изучения: ~60 мин 🎯 Сложность: Продвинутая 🏁 Финальный урок курса
#IaC #terraform #HCL #AWS #EC2 #S3 #provider #state

⚡ Кратко: Terraform IaC за 5 минут

Infrastructure as Code (IaC) — управление инфраструктурой через код вместо ручных действий в консоли. Terraform (HashiCorp) реализует декларативный подход: вы описываете желаемое состояние в .tf-файлах, Terraform сам вычисляет шаги.

  • terraform init — скачать провайдеры и плагины
  • terraform plan — показать, что будет создано/изменено/удалено
  • terraform apply — применить конфигурацию (создать ресурсы)
  • terraform destroy — удалить все ресурсы из конфигурации
  • terraform.tfstate — файл состояния; хранит текущее состояние инфраструктуры
  • Структура проекта: main.tf + variables.tf + outputs.tf + providers.tf
  • Секреты в .terraform.tfvars — в git НЕ коммитить; добавить в .gitignore

Частая ошибка: закоммитить .terraform.tfvars с реальными ключами или забыть выполнить terraform destroy после практики — ресурсы продолжат тарифицироваться.

📖 О чём этот урок

В предыдущем уроке мы научились управлять AWS из командной строки через AWS CLI и Boto3. Теперь переходим на следующий уровень: вместо ручных команд — декларативный код. Infrastructure as Code позволяет описать всю инфраструктуру как набор файлов, хранить их в git, проходить ревью в Pull Requests и воспроизводить окружение на любой машине.

Terraform — самый популярный инструмент IaC, поддерживающий AWS, Azure, GCP и сотни других провайдеров. В этом уроке освоим HCL-синтаксис, создадим S3-бакет и EC2-инстанс кодом, разберём переменные, outputs и управление состоянием.

Что изучим

  • Концепция IaC: императивный vs декларативный подход
  • Terraform: что это, возможности, провайдеры, модули
  • Установка Terraform (Windows / macOS)
  • HCL-синтаксис: terraform{}, provider, resource, variable, output, data
  • Жизненный цикл: init → plan → apply → destroy
  • Файл состояния (terraform.tfstate) и remote state
  • Структура проекта: main.tf / variables.tf / outputs.tf / providers.tf
  • Работа с переменными и terraform.tfvars
  • Практика: создание S3-бакета и EC2-инстанса с Docker через Terraform

📚 Что повторить перед изучением

🎓 Курс завершён — что изучать дальше

Поздравляем с завершением курса Docker & Cloud Tech! Вы прошли путь от основ контейнеризации до Infrastructure as Code. Следующие шаги в развитии:
  • 🎓 К оглавлению курса Docker & Cloud Tech
  • Terraform: модули, remote state в S3 + DynamoDB locking, Terraform Cloud
  • CI/CD: GitHub Actions + Terraform для автоматического деплоя инфраструктуры
  • Kubernetes: оркестрация контейнеров (логичное продолжение Docker)
  • AWS IAM Roles для EC2 вместо Access Keys (best practice для production)
  • Ansible: конфигурация ОС и приложений (дополняет Terraform)