【问题标题】:Reuse existing module in terraform在 terraform 中重用现有模块
【发布时间】:2020-12-28 11:48:23
【问题描述】:

我为不同的模块使用不同的变量,但它们的唯一区别是名称,有没有办法让一个模块,我可以使用不同的变量对其进行迭代。我不必为它制作单独的模块,只需一个模块,我可以重复使用它

variable "Nodejs" {
    default = "node"
}
variable "Python" {
    default = "python"
}
variable "Java" {
    default = "java"
}
module "Nodejs" {
  source        = "./modules/NodeJs"
  name          = var.Nodejs
}

module "Python" {
  source        = "./modules/python"
  name          = var.Python
}

module "Java" {
  source          = "./modules/java"
  name            = var.Java
}

【问题讨论】:

  • Terraform 0.13 支持模块的 for_each。你用的是哪个版本?
  • 我使用的是 0.13。我将如何循环?

标签: amazon-web-services terraform terraform-modules


【解决方案1】:

您可以对代码进行一些重构,以便可以在模块中使用for_each

一个例子:

variable "languages" {
  default = ["Nodejs", "Python", "Java"]
}

module "language" {
  source   = "./modules/language"  
  for_each = toset(var.languages)  
  
  name     = each.key
}

然后你可以参考各个模块使用,例如:

 module.language["Python"]

为此,您必须重构您的 modules 文件夹。

【讨论】:

    猜你喜欢
    • 2021-06-26
    • 2023-01-02
    • 1970-01-01
    • 2021-04-17
    • 2021-04-14
    • 1970-01-01
    • 2021-10-07
    • 2021-04-12
    • 2021-04-28
    相关资源
    最近更新 更多