Terraform CLI команды
Тема дорожной карты · Terraform
Terraform CLI — это основной интерфейс командной строки для всех рабочих процессов HashiCorp Terraform и OpenTofu, предоставляющий команды для инициализации, планирования, применения и удаления HCL-определённой инфраструктуры. Основные команды Terraform CLI: terraform init (загрузка провайдеров и модулей), terraform plan (генерация плана выполнения), terraform apply (создание или обновление инфраструктуры), terraform destroy (снос управляемых ресурсов) и субкоманды terraform state для инспекции и манипуляции состоянием. Terraform CLI читает конфигурацию из .tf-файлов и tfvars в рабочей директории, подключается к настроенному remote-бэкенду состояния и аутентифицируется в облачных провайдерах через переменные окружения или credential helpers. Расширенные возможности Terraform CLI включают управление воркспейсами (terraform workspace), JSON-форматированный вывод для программного использования (флаги -json) и флаг -target для частичных apply во время инцидентов.
Как это работает
Terraform CLI команды — один 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.
Типичные ошибки
Ловушки Terraform CLI команды: нет пиннинга версий → "работает на моём ноуте" / breaking change в CI; удаление .terraform/ и init без lockfile (можете получить другую patch-версию провайдера); terraform apply с ноута в production (нет audit trail — используйте CI); переключение Terraform на OpenTofu в середине проекта без тестов миграции (мелкие, но реальные расхождения).
Связанные понятия
Полезные ресурсы
Проверить знания (1)
Загрузка вопросов…