'No es una salida válida para el módulo' cuando se usa una variable de salida con terraform
Estoy tratando de configurar algunos IaC para un nuevo proyecto usando Hashicorp Terraform en AWS. Estoy usando módulos porque quiero poder reutilizar cosas en múltiples entornos (puesta en escena, producción, desarrollo, etc.)
Me cuesta entender dónde tengo que establecer una variable de salida dentro de un módulo, y cómo lo uso en otro módulo. Cualquier sugerencia a esto sería muy apreciada!
Necesito usar algunas cosas creadas en mi módulo VPC (ID de subred) al crear máquinas EC2. Tengo entendido que no puede hacer referencia a algo de un módulo en otro, por lo que estoy tratando de usar una variable de salida del módulo VPC.
Tengo lo siguiente en mi sitiomain.tf
module "myapp-vpc" {
source = "dev/vpc"
aws_region = "${var.aws_region}"
}
module "myapp-ec2" {
source = "dev/ec2"
aws_region = "${var.aws_region}"
subnet_id = "${module.vpc.subnetid"}
}
dev/vpc
simplemente establece algunos valores y usa mi módulo vpc:
module "vpc" {
source = "../../modules/vpc"
aws_region = "${var.aws_region}"
vpc-cidr = "10.1.0.0/16"
public-subnet-cidr = "10.1.1.0/24"
private-subnet-cidr = "10.1.2.0/24"
}
En mi vpc main.tf, tengo lo siguiente al final, después delaws_vpc
yaws_subnet
recursos (que muestran recursos de subred):
resource "aws_subnet" "public" {
vpc_id = "${aws_vpc.main.id}"
map_public_ip_on_launch = true
availability_zone = "${var.aws_region}a"
cidr_block = "${var.public-subnet-cidr}"
}
output "subnetid {
value = "${aws_subnet.public.id}"
}
Cuando corroterraform plan
Me sale el siguiente mensaje de error:
Error: módulo 'vpc': "subnetid" no es una salida válida para el módulo "vpc"