Урок 07. Infrastructure as Code: Terraform + AWS
⚡ Кратко: 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
📚 Что повторить перед изучением
- ← Урок 06: AWS CLI и Boto3 — настройка aws credentials, работа с EC2 и S3
- Командная строка: PowerShell (Windows) / Terminal (macOS)
- Базовые понятия AWS: регион, VPC, EC2, S3, Security Group, IAM
- Файлы конфигурации AWS:
~/.aws/credentialsи~/.aws/config
🎓 Курс завершён — что изучать дальше
- 🎓 К оглавлению курса 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)