如何处理多个项目中存在的资源。在这种情况下,我有2个TF项目,并在谷歌pubsub中有一个共享主题。在google provider docs之后,我在订阅者项目中创建了此配置。但它给了我一个资源已经存在的错误。
resource "google_pubsub_topic" "item_edited" {
project = "listing-dev"
name = "item_edited"
}
所以这个资源已经存在于其他一些项目中,但是按照指南我也创建了自己的项目。
resource "google_pubsub_subscription" "item_edited" {
name = "item_edited_subscription"
topic = "${google_pubsub_topic.item_edited.id}"
project = "${module.offer-dev.gcp_project_id}"
}
错误:
Error: Error applying plan:
1 error(s) occurred:
* google_pubsub_topic.item_edited: 1 error(s) occurred:
* google_pubsub_topic.item_edited: googleapi: Error 409: Resource already exists in the project (resource=item_edited)., alreadyExists
主题的名称应该具有以下格式:
projects/<your_project>/topics/<your_topic_name>
有关更多信息,您可以查看以下link和/或尝试API explorer。
希望能帮助到你。
实际上,正确的答案是我们需要使用变量来明确定义terraform配置中的依赖关系。
https://learn.hashicorp.com/terraform/getting-started/dependencies.html
通过研究插值表达式中使用的资源属性,Terraform可以自动推断出一个资源何时依赖于另一个资源