Повторное использование существующего модуля в terraform

#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 папки.