Sobes.tech
Junior

Какво е файлът tfstate в Terraform?

sobes.tech AI

Отговор от AI

Файлът tfstate съхранява текущото състояние на инфраструктурата, управлявана от Terraform. Това е ключов елемент, който позволява на Terraform да следи реалните ресурси и тяхното съответствие с конфигурацията в HCL.

В файла се записва:

  • Идентификатор, тип и атрибути на всеки ресурс.
  • Информация за връзките между ресурсите.
  • Данни за доставчика и версиите на модулите.

При изпълнение на команди, Terraform достъпва tfstate:

  • terraform plan: Сравнява текущото състояние с желаното (описано в конфигурационните файлове) и определя бъдещите действия (създаване, промяна, изтриване).
  • terraform apply: Прилага промените, описани в плана, и актуализира tfstate при създаване или промяна на ресурси.
  • terraform destroy: Използва информацията от tfstate за изтриване на всички управлявани ресурси.

Значение на tfstate:

  • Той е единственият източник на истина за състоянието на инфраструктурата.
  • Позволява да се избегне ръчно синхронизиране със облачните доставчици.
  • Ключов е за съвместната работа по проекта, тъй като координира промените.

Препоръки за работа с tfstate:

  • Използвайте отдалечен бекенд (например S3, Google Cloud Storage, Azure Storage) за съхранение на tfstate. Това осигурява централизирано хранилище, блокиране на състоянието (защита от едновременни промени) и версиониране.
  • Никога не съхранявайте tfstate в системи за контрол на версиите (Git), тъй като може да съдържа конфиденциална информация и бързо да расте по размер.

Пример за съхранение в отдалечен S3 бекенд:

terraform {
  backend "s3" {
    bucket = "my-terraform-state-bucket" # Име на S3 кофата
    key    = "path/to/my/terraform.tfstate" # Път към файла със състоянието в кофата
    region = "us-east-1" # AWS регион
    # profile = "my-aws-profile" # Опционално: AWS профил
    # encrypt = true # Опционално: криптиране на сървъра
    # dynamodb_table = "my-terraform-state-lock" # Опционално: таблица DynamoDB за блокиране
  }
}