Ответ
Да, если бэкенд (например, S3, Terraform Cloud) был корректно настроен изначально, то terraform init подгрузит состояние (state) из удаленного хранилища.
Сценарий и действия:
- Исходная конфигурация: В вашем коде есть блок
backend, например, для AWS S3:terraform { backend "s3" { bucket = "my-terraform-state-bucket" key = "prod/network.tfstate" region = "us-east-1" } } - Удаление локального state: Вы удалили локальный файл
terraform.tfstate. - Выполнение
terraform init:- Terraform прочитает конфигурацию бэкенда из кода.
- Он подключится к указанному удаленному хранилищу (S3).
- Загрузит актуальный файл состояния по указанному пути (
key) в бакете (bucket). - В выводе команды вы увидите сообщение:
"Successfully configured the backend "s3"! Terraform will automatically use this backend unless the backend configuration changes."
Критически важные условия:
- Бэкенд должен быть сконфигурирован до удаления локального state. Если вы удалите state до настройки бэкенда, восстановить его автоматически будет невозможно.
- У вас должны быть корректные права доступа (IAM-роли, ключи) для чтения из удаленного бэкенда.
- Если удаленный state также был утерян, Terraform создаст новое пустое состояние, что приведет к расхождению с реальной инфраструктурой. Восстановление потребует ручного импорта (
terraform import) каждого ресурса.