#amazon-web-services #terraform #terraform-modules
#amazon-веб-сервисы #terraform #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
}
Комментарии:
1. Terraform 0.13 поддерживает for_each для модулей. Какую версию вы используете?
2. Я использую 0.13. Как бы мне выполнить цикл?
Ответ №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
папки.