我正在使用 Terraform 通过 google_sql_database_instance 资源配置 Google Cloud SQL PostgreSQL 数据库。我还使用 google_sql_user 资源创建了一个用户。
申请后,我部署了我的应用程序,该应用程序创建了该用户拥有的数据库。
问题是,当我terraform destroy
删除数据库之前,Terraform 会尝试删除用户。它会收到错误(这是预料之中的;您无法删除拥有数据库的 Postgres 用户)。但 Terraform 不需要删除用户,因为下一步是删除整个数据库实例。
有没有办法告诉 Terraform 删除 google_sql_database_instance 将会删除 google_sql_user,这样 Terraform 就不会先尝试明确删除用户而失败?
答案1
使用 terraformstate 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 $@
答案2
不确定它是否会起作用,但尝试使用depends_on
实例资源,例如
depends_on = ["google_sql_database_instance.ResourceNameHere"]