terraform.tfstate
Тема дорожной карты · Terraform
State-файл Terraform (terraform.tfstate) — это JSON-документ, фиксирующий соответствие между объявлениями HCL-ресурсов и реальными объектами инфраструктуры, управляемыми Terraform. Каждый terraform apply читает текущее состояние, вычисляет разницу с желаемой HCL-конфигурацией и записывает обновлённый state-файл после применения изменений. State-файл Terraform хранит ID ресурсов, значения атрибутов и метаданные зависимостей, которые Terraform использует для генерации точного вывода terraform plan и обнаружения дрейфа от объявленной конфигурации. Поскольку state-файл может содержать чувствительные значения — пароли и приватные ключи — его следует всегда хранить в защищённом remote-бэкенде (S3, Azure Blob, GCS, Terraform Cloud) с шифрованием в покое, включённым версионированием и доступом, ограниченным авторизованными принципалами.
Как это работает
terraform.tfstate — источник истины того, что 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.tfstate: коммит terraform.tfstate в git (содержит секреты + не выдержит конкурентных правок); удаление state "начать заново" (осиротит каждый ресурс — останутся в облаке, не отслеживаются, тратят деньги); два человека одновременный apply без локинга (corruption state); state-хирургия (state rm + import) без бекапа предыдущего state.