【发布时间】:2019-10-23 10:30:14
【问题描述】:
我为可重用的基础架构创建了一个模块。该模块是一个项目,所以每次我们想创建一个新项目和相关的基础设施项目时,我们都可以使用这个模块:
module "project1" {
source = ".modules/project_module"
project_id = "project1"
...
}
module "project2" {
source = ".modules/project_module"
project_id = "project2"
...
}
该模块使用 google 提供程序在 GCP 上创建资源。
不幸的是,这并没有像希望的那样工作。首先,每个新项目都需要调用terraform init,其次,无法删除项目,因为从main.tf 文件中删除模块时,Terraform 抱怨说,如果没有 Google 提供程序,它无法破坏资源。例如:
module.project1.google_storage_bucket_iam_member.some-bucket:
configuration for module.project1.provider.google is not present; a provider configuration block is required for all operations
有没有办法在同一个main.tf 中多次使用同一个模块?我意识到理想情况下我应该编写一个提供程序,但我现在想避免这种情况。
【问题讨论】:
-
这是 GCP 提供商独有的吗?这完全适用于 AWS 提供商。
-
我怀疑这是由于模块的内容,并且它正在该模块中设置提供程序配置。您能否编辑您的问题以包含一个minimal reproducible example,说明该模块中有什么表现出这种行为?
标签: terraform