【问题标题】:Conditionally create a single module in Terraform有条件地在 Terraform 中创建单个模块
【发布时间】:2021-06-05 22:19:00
【问题描述】:

我一直在尝试有条件地使用根模块中的模块,因此对于某些环境,不会创建该模块。许多人声称,通过使用条件将模块中的 count 设置为 0 或 1 就可以了。

module "conditionally_used_module" {
  source = "./modules/my_module"
  count  = (var.create == true) ? 1 : 0
}

然而,这改变了conditionally_used_module 的类型:我们将有一个包含单个对象的列表(或元组)而不是一个对象(或映射)。是否有另一种方法可以实现这一点,这并不意味着改变模块的类型?

【问题讨论】:

  • 在 teraform 0.13 之后 - 模块也支持 for_each

标签: terraform hcl terraform-modules


【解决方案1】:

要有条件地创建一个模块,您可以使用一个变量,假设它在模块variables.tfvariables.tf 文件中称为create_module conditionally_used_module

然后,对于 conditionally_used_module 模块中的每个资源,您将使用 count 有条件地创建或不创建该特定资源。

以下示例应该可以工作并为您提供所需的效果。

# Set a variable to know if the resources inside the module should be created
module "conditionally_used_module" {
  source = "./modules/my_module"
  create_module = var.create
}

# Inside the conditionally_used_module file
# ( ./modules/my_module/main.tf ) most likely 
# for every resource inside use the count to create or not each resource
resource "resource_type" "resource_name" {
 count = var.create_module ? 1 : 0
 ... other resource properties 
}

【讨论】:

    【解决方案2】:

    terraform-aws-eks 存储库显示了一个示例,用于在 README 文件的“条件创建”块中实现您想要的。

    【讨论】:

    • 点击上面的链接,然后查看README文件“条件创建”段下的代码
    • @ChrisF,如果您包含报价或一些代码,您的答案可能会得到改善。您的链接目前没有帮助,因为它没有链接到自述文件中的相关部分,并且根据您的最新评论,没有“条件创建”段落。
    • 如果有人想知道,使用 Conditional Creation 的最后一页在此link
    猜你喜欢
    • 2021-09-06
    • 1970-01-01
    • 2021-11-20
    • 2018-06-26
    • 2021-10-03
    • 1970-01-01
    • 2020-10-06
    • 2022-06-28
    • 1970-01-01
    相关资源
    最近更新 更多