Remote state (S3, GCS)

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

Удалённое состояние Terraform — это практика хранения файла terraform.tfstate в общем, надёжном бэкенде — например, S3-бакете с DynamoDB-блокировкой, Azure Blob Storage, GCS или Terraform Cloud — вместо локального диска. Удалённое состояние обеспечивает совместные IaC-рабочие процессы, при которых несколько инженеров и CI-конвейеров запускают terraform plan и terraform apply против одной инфраструктуры, не перезаписывая изменения друг друга. Другие конфигурации Terraform могут читать выходные данные из бэкенда удалённого состояния через источник данных terraform_remote_state, что делает его основным механизмом обмена данными между корневыми модулями. Включение версионирования на S3-бакете или учётной записи хранения обеспечивает журнал аудита и позволяет откатиться к любой предыдущей ревизии состояния, что критично для управления удалённым состоянием Terraform в production.

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

Remote state (S3, GCS) — источник истины того, что 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 по расписанию.

Типичные ошибки

Ловушки Remote state (S3, GCS): коммит terraform.tfstate в git (содержит секреты + не выдержит конкурентных правок); удаление state "начать заново" (осиротит каждый ресурс — останутся в облаке, не отслеживаются, тратят деньги); два человека одновременный apply без локинга (corruption state); state-хирургия (state rm + import) без бекапа предыдущего state.

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

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