Есть ли способ отследить, где находится мой файл состояния? - PullRequest
1 голос
/ 07 мая 2019

Я использую TF 0.11.11 на GCP.У меня есть настройки файла backend.tfvars для хранения по файлу состояния в корзине GCP:

# bucket where terraform state file will be kept
bucket = "this-is-my-tf-bucket"

# folder in the bucket where the terraform state file will be kept
prefix = "bucket.folder.sbx"

credentials = "greg-cred.json"

Однако после запуска init и применения я замечаю, что папка (bucket.folder.sbx) делаетне существует в моем ведре.Процесс init и apply работает нормально, без ошибок.Поэтому мне интересно ... Куда уходит мой файл состояния?

Есть ли способ отследить это?

В качестве дополнительного вопроса, кажется, что мой локальный файл "terraform.tfstate"файл не помещается в мой каталог .terraform и помещается в корневой каталог.Мне интересно, почему это?Как вы контролируете, где находится локальный файл terraform.tfstate?

Ответы [ 2 ]

0 голосов
/ 10 мая 2019

Создание backend.tfvars не создает конфигурацию бэкэнда. Более того, он даже не загружается автоматически. Подробнее об этом позже.

Для создания конфигурации удаленного бэкэнда GCS вы должны следовать документации Terraform GCS бэкэнд :

terraform {
  backend "gcs" {
    # bucket where terraform state file will be kept
    bucket = "this-is-my-tf-bucket"
    # folder in the bucket where the terraform state file will be kept
    prefix = "bucket.folder.sbx"
    credentials = "greg-cred.json"
  }
}

Если вы не предоставите конфигурацию бэкэнда, вы получите локальный бэкэнд по умолчанию и в соответствии с стандартной документацией бэкэнда путь к файлу состояния:

по умолчанию - "terraform.tfstate" относительно корневого модуля по умолчанию.

Что касается backend.tfvars, *.tfvars не загружаются автоматически (за исключением terraform.tfvars или *.auto.tfvars). См. документацию по входным переменным . Если вы хотите загрузить файл backend.tfvars, вы должны использовать -var-file=backend.tfvars. Вы также должны ссылаться на эти переменные из вашей конфигурации бэкэнда. Смотрите этот пример .

0 голосов
/ 10 мая 2019

Ожидается, что файл terraform.tfstate будет находиться в корневом каталоге проекта. Согласно архитектуре Terrafor, в папке .terraform должны быть установлены модули и провайдеры, а не файл состояния.

Если вы хотите сохранить файл состояния в корзине GCP - вам нужно объявить блок "terraform", см. документацию :

terraform {
  backend "gcs" {
    bucket  = "tf-state-prod"
    prefix  = "terraform/state"
  }
}

Итак, если вы видите terraform.tfstate локально - это определенно не в облаке. Terraform создает только один файл состояния либо локально, либо в удаленном сегменте (с конфигурацией выше).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...