问题描述
我为不同的模块使用了不同的变量,但是它们之间的唯一区别是名称,有没有办法拥有一个模块,我可以使用不同的变量对其进行迭代。我不必为此仅创建一个模块,就可以重复使用
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
文件夹。