terraform
43 commands
43 shown
Plan с файлом переменных
Показать изменения; сохранить артефакт плана для гейтинга в CI
terraform plan -var-file=prod.tfvars -out=plan.tfplan
Apply сохранённого плана
Применить именно ранее сгенерированный план — без интерактивных запросов
terraform apply plan.tfplan
Импорт существующего ресурса
Взять уже существующий ресурс под управление Terraform
terraform import module.path.resource_type.name <remote-id>
Просмотр состояния ресурса
Атрибуты ресурса в Terraform state
terraform state show module.path.resource_type.name
Перемещение ресурса в state
Переименовать/реорганизовать ресурс без удаления и пересоздания
terraform state mv old.address new.address
Список workspace
Все workspace; текущий отмечен *
terraform workspace list
Создать и переключить workspace
Создать новый workspace и переключиться на него
terraform workspace new staging && terraform workspace select staging
Валидировать конфигурацию
Проверить конфигурацию Terraform на синтаксические ошибки
terraform validate
Форматировать код
Автоформатировать все .tf файлы рекурсивно
terraform fmt -recursive
Output значения
Вывести все output значения в JSON; удобно в пайплайнах
terraform output -json
Уничтожить конкретный ресурс
Уничтожить один ресурс не трогая остальное
terraform destroy -target=module.vpc.aws_vpc.main
Taint ресурса (принудительная замена)
Пометить ресурс для пересоздания при следующем apply
terraform taint module.eks.aws_instance.node
Убрать ресурс из state
Убрать ресурс из state не уничтожая его в облаке
terraform state rm module.path.resource_type.name
Обновить state
Синхронизировать state с реальной инфраструктурой
terraform refresh -var-file=prod.tfvars
Граф зависимостей
Визуализировать граф зависимостей ресурсов (требует Graphviz)
terraform graph | dot -Tsvg > graph.svg
Список ресурсов в state
Отфильтровать ресурсы state по паттерну
terraform state list | grep <pattern>
Форматировать все файлы
Рекурсивно форматировать все .tf файлы в поддиректориях
terraform fmt -recursive
Валидация конфигурации
Проверить синтаксис конфигурации без обращения к remote state
terraform validate
Plan с файлом переменных
Сгенерировать план с prod переменными, сохранить в файл
terraform plan -var-file=prod.tfvars -out=prod.tfplan
Применить сохранённый план
Применить ранее сохранённый план без повторного подтверждения
terraform apply prod.tfplan
Ресурс в state
Вывести все атрибуты конкретного ресурса из state
terraform state show 'aws_instance.web[0]'
Переместить ресурс в state
Переименовать или переместить ресурс без уничтожения
terraform state mv 'aws_instance.web' 'module.app.aws_instance.web'
Импортировать существующий ресурс
Взять существующий ресурс под управление Terraform
terraform import 'aws_s3_bucket.mybucket' my-existing-bucket
Пометить ресурс для пересоздания
Пометить ресурс для уничтожения и пересоздания при следующем apply
terraform taint 'aws_instance.web[0]'
Удалить ресурс из state
Удалить ресурс из state без его уничтожения в облаке
terraform state rm 'aws_instance.legacy'
Вывести outputs
Вывести все outputs в компактном JSON
terraform output -json | jq 'to_entries[] | {(.key): .value.value}'
Уничтожить конкретный ресурс
Уничтожить один ресурс без полного плана
terraform destroy -target='aws_instance.web' -auto-approve
Разблокировать state
Освободить заблокированный state после неудачного apply
terraform force-unlock <lock-id>
Создать и переключить workspace
Создать и активировать Terraform workspace
terraform workspace new staging && terraform workspace select staging
Граф зависимостей
Отобразить граф зависимостей как SVG (требует graphviz)
terraform graph | dot -Tsvg > graph.svg && open graph.svg
Список провайдеров с версиями
Зафиксировать версии провайдеров для нескольких платформ
terraform providers lock -platform=linux_amd64 -platform=darwin_arm64
Перемещение ресурса в state
Переименование/рефакторинг адреса без уничтожения; в новых версиях лучше блок moved{}
terraform state mv 'aws_instance.web' 'aws_instance.app'
Удаление осиротевшего объекта из state
Забыть ресурс из state без удаления реальной инфраструктуры; note: объект остаётся живым
terraform state rm 'aws_s3_bucket.legacy'
Просмотр state одного ресурса
Вывести все атрибуты одного адреса для разбора дрейфа и отладки
terraform state show 'module.vpc.aws_subnet.private[0]'
Поиск по списку state
Отфильтровать управляемые адреса перед операциями со state
terraform state list | grep -i 'aws_iam'
Импорт через блок import
Декларативный импорт; -generate-config-out генерирует HCL для импортируемого объекта
cat > import.tf <<'EOF'
import {
to = aws_instance.web
id = "<id>"
}
EOF
terraform plan -generate-config-out=generated.tf
Рефакторинг через блок moved
Переименование адресов в коде без destroy/recreate; фиксируется в системе контроля версий
cat >> moved.tf <<'EOF'
moved {
from = aws_instance.web
to = aws_instance.app
}
EOF
Замена ресурса (современный taint)
Принудительный destroy+recreate одного ресурса; заменяет устаревший terraform taint
terraform apply -replace='aws_instance.web'
Точечный targeted plan
Ограничить план одним адресом; note: -target — аварийный приём, может скрывать дрейф
terraform plan -target='module.db.aws_db_instance.main'
Refresh-only план (детект дрейфа)
Синхронизировать state с реальной инфраструктурой без изменений; показывает внешний дрейф
terraform plan -refresh-only
Миграция backend при init
Перенести state в новый backend; -reconfigure пропускает миграцию и сбрасывает настройки
terraform init -migrate-state -backend-config=backend.hcl
Запрос outputs через jq
Передать машиночитаемые outputs в jq для скриптов и связывания систем
terraform output -json | jq -r '.endpoints.value[]'
Трассировка плана через TF_LOG
Записать отладку провайдера/API в файл; TRACE даёт максимально подробный уровень
TF_LOG=DEBUG TF_LOG_PATH=tf.log terraform plan
no commands match