【问题标题】:How to re-use a module several times in the same `main.tf`?如何在同一个`main.tf`中多次重用一个模块?
【发布时间】: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


【解决方案1】:

结果发现状态不一致。最终,在从头开始重新创建项目同时将 Google 提供程序保持在模块之外之后,它工作了。

【讨论】:

    猜你喜欢
    • 2022-07-01
    • 1970-01-01
    • 1970-01-01
    • 2017-04-08
    • 2022-01-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-09-24
    相关资源
    最近更新 更多