🏗️ Terraform Workflow & Best Practices
init, plan, apply, destroy, workspace, Terraform Cloud
🔄 Основной Workflow
1. Write — HCL конфигурация. 2. Init (`terraform init`) — загрузка провайдер-плагинов, инициализация backend. 3. Plan (`terraform plan`) — просмотр предстоящих изменений. 4. Apply (`terraform apply`) — применение изменений. 5. Destroy (`terraform destroy`) — удаление всех ресурсов.
🔧 Важные Команды
`terraform fmt` — форматирование кода. `terraform validate` — проверка конфигурации. `terraform show` — просмотр state. `terraform output` — значения выходных переменных. `terraform refresh` — синхронизация state с реальным состоянием. `terraform taint` — пометка ресурса для пересоздания.
🌍 Workspaces
Одна конфигурация — несколько state. `terraform workspace new dev`. Каждый workspace имеет отдельный state file. Use case: одна конфигурация для dev/staging/prod. Terraform Cloud — управляемые workspaces, удалённый запуск, интеграция с VCS, policy as code (Sentinel).
🔐 Sensitive Data
Учётные данные провайдера: переменные окружения, AWS profile, IAM role. НИКОГДА не записывайте credentials в .tf файлы. Переменная `sensitive = true` — скрывается в выводе и логах. Управление секретами: HashiCorp Vault, AWS Secrets Manager.
💡 Ключевые моменты
- init → plan → apply — основной workflow
- terraform fmt: форматирование кода (проверяйте в CI)
- terraform validate: проверка синтаксиса
- Workspace: отдельный state, единая конфигурация
- Credentials НИКОГДА не хранить в .tf файлах
- Terraform Cloud: remote backend + CI/CD
📋 Пример кода
# Core workflow
terraform init # Provider va backend init
terraform fmt # Kodni formatlash
terraform validate # Konfiguratsiya tekshirish
terraform plan # O'zgarishlarni ko'rish
terraform plan -out=tfplan # Plan saqlash
terraform apply tfplan # Saqlangan planni apply
terraform destroy # Barcha resurslarni o'chirish
# Workspace
terraform workspace list
terraform workspace new staging
terraform workspace select staging
terraform workspace show
# Useful flags
terraform apply -auto-approve # Confirm so'ramasdan
terraform plan -var="region=eu-west-1"
terraform apply -target=aws_instance.web # Faqat bitta resurs
🎯 Советы для экзамена
- `terraform plan -out=tfplan` → `terraform apply tfplan` — best practice в CI/CD: сохранить план и применить именно его
- `terraform taint` (устарело в Terraform 1.5+) → вместо него используется `terraform apply -replace="aws_instance.web"`
- Workspace доступен в конфигурации через переменную `terraform.workspace`: `local.env = terraform.workspace`
- `terraform validate` проверяет синтаксис, тогда как `terraform plan` выполняет реальные API-вызовы (требуется аутентификация)
- Sentinel — policy as code в Terraform Cloud/Enterprise (недоступно в open-source Terraform)
⚠️ Частые ошибки
- Использование `terraform apply` с флагом `-auto-approve` без просмотра плана в production — опасно!
- Путаница между `terraform destroy` и `terraform apply` — destroy удаляет все ресурсы
- Считать Workspace идеальным решением для изоляции окружений — в крупных проектах предпочтительнее отдельные state backend
🧠 Для запоминания: "WIPA D" = Write, Init, Plan, Apply, Destroy — 5 шагов основного workflow Terraform
Проверьте себя по теме «Terraform Workflow & Best Practices»
Бесплатные интерактивные тесты, пробный экзамен и полные уроки — на платформе CertMaster.
Начать бесплатно →