Назад | Перейти на главную страницу

Terraform destroy не удалось, потому что пользователь Google SQL владеет базами данных

Я использую Terraform для подготовки базы данных Google Cloud SQL PostgreSQL с помощью ресурса google_sql_database_instance. Я также создаю пользователя с ресурсом google_sql_user.

После применения я развертываю свое приложение, которое создает базы данных, принадлежащие этому пользователю.

Проблема в том, что когда я terraform destroy, Terraform пытается удалить пользователя перед удалением базы данных. Выдает ошибку (которая ожидаема; вы не можете удалять пользователей Postgres, пока они владеют базами данных). Но Terraform не нужно удалять пользователя, потому что следующим шагом будет удаление всего экземпляра базы данных.

Есть ли способ сообщить Terraform, что удаление google_sql_database_instance повлечет за собой удаление google_sql_user, чтобы Terraform не пытался сначала явно удалить пользователя и потерпел неудачу?

Используйте terraform's state rm сказать ему, чтобы он забыл, что пользователи и база данных существуют, чтобы он не пытался активно их удалить (и потерпел неудачу) во время уничтожения.

Я использую destroy.sh сценарий:

terraform state rm module.your_server_name.google_sql_user.users \ 
     module.your_server_name.google_sql_database.your_database_name
terraform destroy $@

Не уверен, что это сработает, но попробуйте использовать depends_on для ресурса экземпляра, например

depends_on = ["google_sql_database_instance.ResourceNameHere"]