У меня есть модуль в моем файле terraform, который создал несколько серверов баз данных, которые делают несколько вещей.
Сначала он создает группу автоматического масштабирования для использования определенного изображения, затем он создает несколько томов EBS и присоединяет их, а затем добавляет некоторый лямбда-код, чтобы при запуске экземпляры регистрировались на маршруте 53. Таким образом, всего около 80 строк текста.
Извлекать
module "systemt-sql-db01" {
source = "localmodules/tf-aws-asg"
name = "${var.envname}-sys-db01"
envname = "${var.envname}"
service = "dbpx"
ami_id = "${data.aws_ami.app_sqlproxy.id}"
user_data = "${data.template_cloudinit_config.config-enforcement-sqlproxy.rendered}"
#subnets = ["${module.subnets-enforcement.web_private_subnets}"]
subnets = ["${element(module.subnets-enforcement.web_private_subnets, 1)}"]
security_groups = ["${aws_security_group.unfiltered-egress-sg.id}", "${aws_security_group.sysopssg.id}", "${aws_security_group.system-sqlproxy.id}"]
key_name = "${var.keypair}"
load_balancers = ["${var.envname}-enf-dbpx-int-elb"]
iam_instance_profile = "${module.iam_profile_generic.profile_arn}"
instance_type = "${var.enforcement_instancesize_dbpx}"
min = 0
max = 0
}
Затем у меня есть два файла параметров, один из которых вызывается при запуске в предварительную версию, а второй - при запуске в производство. Я не хочу, чтобы они содержали что-либо, кроме переменных.
Проблема в том, что для производства мне нужно дважды вызвать модуль, но для производства мне нужно, чтобы он вызывается три раза.
Люди говорят о функции подсчета для модулей, но я пока не думаю, что это возможно. Может ли кто-нибудь предложить другие способы сделать это? Я бы хотел, чтобы в моем файле параметров можно было установить переменную списка всех имен DB ASG, а затем каждый раз перебирать этот вызов модуля.
Надеюсь это имеет смысл?
Спасибо
dynamic
module
блоков 13.09.2019