terraform import
Тема дорожной карты · Terraform
Импорт состояния Terraform — это механизм перевода существующих ресурсов инфраструктуры — созданных вручную, другим инструментом или другим воркспейсом Terraform — под управление Terraform без их удаления и повторного создания. Классический подход использует terraform import <resource_address> <provider_id> для заполнения terraform.tfstate текущими атрибутами целевого ресурса, чтобы последующие запуски terraform plan не показывали дрейфа. Terraform 1.5 ввёл декларативный блок import в HCL, интегрирующий импорт состояния Terraform в стандартный рабочий процесс terraform apply и позволяющий автоматически генерировать соответствующую конфигурацию ресурса. Импорт состояния Terraform часто является первым шагом при внедрении IaC для унаследованной инфраструктуры на AWS, Azure, GCP или Yandex Cloud и требует наличия соответствующего блока HCL-ресурса, написанного до или вместе с операцией импорта.
Как это работает
terraform import — источник истины того, что Terraform считает существующим. Маппит HCL-ресурсы к реальным ID + трекает атрибуты. Local state (terraform.tfstate) ок для соло-обучения; всегда используйте remote backend (S3+DynamoDB, Yandex Object Storage+lockable, Terraform Cloud, GitLab, или terraform login) для команды и production — даёт state locking (предотвращает конкурентные apply), versioned history, контроль доступа. State может содержать секреты — шифруйте.
Когда применять
Remote backend — с первого дня любого командного проекта. Делите state per environment + per concern (один большой state = blast radius на плохом изменении). Подкоманды terraform state (mv, rm, import) — осторожно, они напрямую мутируют state. Drift-detection — terraform plan в CI по расписанию.
Типичные ошибки
Ловушки terraform import: коммит terraform.tfstate в git (содержит секреты + не выдержит конкурентных правок); удаление state "начать заново" (осиротит каждый ресурс — останутся в облаке, не отслеживаются, тратят деньги); два человека одновременный apply без локинга (corruption state); state-хирургия (state rm + import) без бекапа предыдущего state.