Как совместить состояние Terraform с существующим ведром? - PullRequest
0 голосов
/ 23 января 2020

Использование Terraform 11.14 Мой файл terraform содержит следующий ресурс:

resource "google_storage_bucket" "assets-bucket" {
  name          = "${local.assets_bucket_name}"
  storage_class = "MULTI_REGIONAL"
  force_destroy = true
}

И этот контейнер уже создан (он существует в инфраструктуре на основе предыдущего apply) Однако состояние (удаленное на gcs) противоречиво и, похоже, не включает это ведро. В результате, terraform apply завершается с ошибкой:

google_storage_bucket.assets-bucket: googleapi: Error 409: You already own this bucket. Please select another name., conflict

Как я могу согласовать состояние? (terraform refresh не помогает)

РЕДАКТИРОВАТЬ

Следуя ответу @ ydaetskcoR, я сделал:

terraform import module.bf-nathan.google_storage_bucket.assets-bucket my-bucket

Вывод:

module.bf-nathan.google_storage_bucket.assets-bucket: Importing from ID "my-bucket"...
module.bf-nathan.google_storage_bucket.assets-bucket: Import complete! Imported google_storage_bucket (ID: next-assets-bf-nathan-botfront-cloud)
module.bf-nathan.google_storage_bucket.assets-bucket: Refreshing state... (ID: next-assets-bf-nathan-botfront-cloud)

Error: module.bf-nathan.provider.kubernetes: 1:11: unknown variable accessed: var.cluster_ip in:

https://${var.cluster_ip}

Шаг обновления не работает. Я выполнил команду из root проекта, где существует файл terraform.tfvars. Я попытался добавить -var-file=terraform.tfvars, но не повезло. Есть идеи?

1 Ответ

2 голосов
/ 23 января 2020

Вам необходимо импортировать его в существующий файл состояния. Вы можете сделать это с помощью команды terraform import для любого ресурса, который его поддерживает.

К счастью, ресурс google_storage_bucket поддерживает его :

Контейнеры могут быть импортированы с использованием имени или проекта / имени. Если проект не передан команде импорта, он будет выведен из блока поставщика или переменных среды. Если это не может быть выведено, оно будет запрошено из Compute API (это будет невозможно, если API не включен).

например,

$ terraform import google_storage_bucket.image-store image-store-bucket
$ terraform import google_storage_bucket.image-store tf-test-project/image-store-bucket
...