Я видел много постов, в которых говорится о передаче вывода модуля в другой модуль. По какой-то причине я не могу заставить это работать.
Я могу получить выходные данные модуля без каких-либо проблем
$ terraform output
this_sg_id = sg-xxxxxxxxxxxxxxxxx
Однако, когда я вызываю модуль в ресурсе или в другой модуль, он запрашивает у меня идентификатор группы безопасности.
$ terraform plan
var.vpc_security_group_ids
Security Group ID
Enter a value:
Вот моя файловая структура:
── dev
│ └── service
│ └── dev_instance
│ ├── main.tf
│ ├── outputs.tf
│ ├── variables.tf
├── modules
│ ├── ec2
│ │ ├── build_ec2.tf
│ │ ├── outputs.tf
│ │ └── variables.tf
│ └── sg
│ ├── build_sg.tf
│ ├── outputs.tf
│ └── variables.tf
Не уверен, что это правильно, но в dev / service / dev_instance / main.tf:
module "build_sg" {
source = "../../../modules/sg/"
vpc_id = var.vpc_id
sg_name = var.sg_name
sg_description = var.sg_description
sg_tag = var.sg_tag
sg_tcp_ports = var.sg_tcp_ports
sg_tcp_cidrs = var.sg_tcp_cidrs
sg_udp_ports = var.sg_udp_ports
sg_udp_cidrs = var.sg_udp_cidrs
sg_all_ports = var.sg_all_ports
sg_all_cidrs = var.sg_all_cidrs
}
module "build_ec2" {
source = "../../../modules/ec2/"
vpc_security_group_ids = ["${module.build_sg.this_sg_id}"]
}
В dev / service / dev_instance / output.tf:
output "this_sg_id" {
description = "The security group ID"
value = "${module.build_sg.this_sg_id}"
}
Мой файл ec2 build_ec2.tf модуля имеет следующее:
resource "aws_instance" "ec2" {
vpc_security_group_ids = ["${module.build_sg.this_sg_id}"]
}