'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"

Respuestas a la pregunta(1)

Su respuesta a la pregunta