在 terraform 中重用现有模块

Reuse existing module in terraform

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

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
}

您可以对您的代码进行一些重构,以便您可以在模块中使用 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 文件夹。