Установка бинарника

Тема дорожной карты · Terraform

Установка Terraform — это первый шаг к управлению инфраструктурой как кодом: результатом является бинарник CLI terraform, выполняющий команды terraform init, terraform plan, terraform apply и terraform destroy против AWS, Azure, GCP, Kubernetes и других провайдеров. HashiCorp распространяет Terraform как единый самодостаточный бинарник для Linux, macOS и Windows; рекомендуемый способ установки для команд — tfenv, менеджер версий, устанавливающий несколько версий Terraform и переключающий между ними с помощью файла .terraform-version, закомиченного в репозиторий, — это гарантирует, что каждый инженер и CI/CD-раннер (GitHub Actions, GitLab CI) использует идентичный бинарник. Альтернативно, установка Terraform на Debian/Ubuntu доступна через APT-репозиторий HashiCorp (apt-get install terraform), на macOS — через Homebrew (brew install terraform или brew install tfenv), на Windows — через Chocolatey или winget. OpenTofu, open-source форк Terraform, предоставляет эквивалентный бинарник tofu и собственный менеджер версий tofuenv с полной совместимостью для существующих HCL-конфигураций и tfvars-файлов. После установки Terraform команда terraform version подтверждает активную версию бинарника, а terraform init в любой директории конфигурации загружает необходимые провайдеры из Terraform Registry и настраивает выбранный remote-бэкенд для хранения состояния.

Как это работает

Установка бинарника — один 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 в середине проекта без тестов миграции (мелкие, но реальные расхождения).

Связанные понятия

Полезные ресурсы