совместное использование входных переменных во многих модулях терраформирования

#amazon-web-services #terraform #terraform-modules

Вопрос:

У меня есть два разных модуля terraform с одним и тем же входным var, за исключением имени и домена. Есть ли способ поделиться входным var? может быть, с помощью внешнего файла или чего-то в этом роде?

Вот мои модули

 module "autoscaling_docker_frontend" {
  source = "../../_/autoscaling_docker"

  domain        = "domain-1.com"
  has_keychain  = true
  instance_type = "t3.micro"
  name          = "name-1"

  certificate         = var.certificate
  ami                 = var.ami
  account_id          = var.account_id
  dns_zone_id         = var.dns_zone_id
  environment         = var.environment
  key_name            = var.key_name
  subnets             = var.subnets
  vpc_id              = var.vpc_id
  policies            = var.policies
  region              = var.region
  security_groups_alb = var.security_groups_alb
  security_groups_ec2 = var.security_groups_ec2
}

module "autoscaling_docker_backend" {
  source = "../../_/autoscaling_docker"

  domain        = "domain-2.com"
  has_keychain  = true
  instance_type = "t3.micro"
  name          = "name-2"

  certificate         = var.certificate
  ami                 = var.ami
  account_id          = var.account_id
  dns_zone_id         = var.dns_zone_id
  environment         = var.environment
  key_name            = var.key_name
  subnets             = var.subnets
  vpc_id              = var.vpc_id
  policies            = var.policies
  region              = var.region
  security_groups_alb = var.security_groups_alb
  security_groups_ec2 = var.security_groups_ec2
}
 

Спасибо

Комментарии:

1. Что вы подразумеваете под «поделиться»? Как поделиться?

2. Я хотел бы поделиться всеми входными данными. Поместите все входные переменные в выделенные файлы и вызовите этот файл в модуле (как мы делаем с «источником»).

3. Извините за задержку. У меня не было времени попробовать. Я попробую на этой неделе. Спасибо

4. Я не могу создать общий модуль, потому что модуль «autoscaling_docker» требует, чтобы все эти переменные были настроены правильно. autoscaling_docker-это общий модуль, используемый повсеместно.

Ответ №1:

Ваши общие переменные, как видите, связаны с сетью. Таким образом, вы можете создать специальный модуль для создания сетевой среды для вашей группы автоматического масштабирования.

Таким образом, вы сначала вызовете сетевой модуль, а затем сможете передать все его выходные данные другим модулям в качестве входной переменной.