Установка и настройка
Тема дорожной карты · Terraform
Установка Terraform — это первый шаг к использованию IaC-инструмента HashiCorp: нужно загрузить подходящий бинарник для вашей ОС с официальной страницы релизов HashiCorp или через менеджер пакетов — apt, brew, dnf или winget. После установки проверьте настройку командой terraform version, чтобы убедиться, что бинарник находится в PATH и готов к использованию. Для команд, работающих с несколькими проектами с разными требованиями к синтаксису HCL, менеджеры версий — tfenv для Terraform или tofuenv для OpenTofu — позволяют фиксировать и переключаться между конкретными версиями с помощью файла .terraform-version. Установка Terraform также доступна как Docker-образ (hashicorp/terraform) для CI/CD-конвейеров, где нежелательна прямая установка бинарников, а Terraform Cloud предоставляет управляемый раннер, полностью устраняющий необходимость локальной установки.
Как это работает
Установка и настройка — один Go-бинарник (terraform или tofu). Установка: tfenv / tfswitch (версионник — рекомендуется, проекты пинят версии), официальный tarball, пакетные менеджеры (Homebrew, apt). Раскладка проекта: *.tf конфиги, terraform.tfvars (или *.auto.tfvars) для значений переменных, .terraform/ (в gitignore — плагины провайдеров + lockfile), terraform.tfstate (state-файл — НИКОГДА не коммитьте, если содержит секреты; используйте remote backend). Команды: init, plan, apply, destroy, validate, fmt.
Когда применять
Всегда закрепляйте версию Terraform / OpenTofu (required_version = ">= 1.5") и провайдеров (required_providers { ... version = "~> 5.0" }) — иначе у разных членов команды разное поведение. tfenv/tfswitch — чтобы per-project версии не конфликтовали. Коммитьте .terraform.lock.hcl (этот — да), версии провайдеров детерминированы. Всегда terraform fmt перед коммитом; CI должна enforce.
Типичные ошибки
Ловушки Установка и настройка: нет пиннинга версий → "работает на моём ноуте" / breaking change в CI; удаление .terraform/ и init без lockfile (можете получить другую patch-версию провайдера); terraform apply с ноута в production (нет audit trail — используйте CI); переключение Terraform на OpenTofu в середине проекта без тестов миграции (мелкие, но реальные расхождения).