Ответ
State file (terraform.tfstate) — это JSON-файл, который хранит полное текущее состояние управляемой инфраструктуры: идентификаторы реальных облачных ресурсов, их атрибуты и зависимости между ними.
Основные функции:
- Сопоставление кода с реальностью: Сравнивает конфигурацию (
.tfфайлы) с фактическим состоянием в облачном провайдере, чтобы определить план изменений (terraform plan). - Хранение метаданных: Содержит чувствительные данные, такие как внутренние ID ресурсов от провайдера (например,
i-0abc123def456для EC2-инстанса), которые нельзя получить повторно из кода. - Управление зависимостями: Отслеживает граф зависимостей ресурсов для корректного порядка создания, обновления или удаления.
Практический пример удаленного бэкенда (S3 с блокировкой DynamoDB):
terraform {
backend "s3" {
bucket = "company-terraform-state-prod"
key = "network/terraform.tfstate"
region = "eu-west-1"
encrypt = true
dynamodb_table = "terraform-state-lock"
}
}
Почему это важно: Без state file Terraform не сможет понять, какие ресурсы уже созданы, и при каждом запуске будет пытаться создать всё заново. Удаленное хранение с блокировкой (state locking) критично для командной работы, чтобы предотвратить конфликтующие одновременные изменения.