'Não é uma saída válida para o módulo' ao usar a variável de saída com terraform
Estou tentando configurar algum IaC para um novo projeto usando o Hashicorp Terraform na AWS. Estou usando módulos porque quero poder reutilizar coisas em vários ambientes (teste, prod, dev, etc.)
Estou lutando para entender onde tenho que definir uma variável de saída dentro de um módulo e como usá-la em outro módulo. Qualquer indicação para isso seria muito apreciada!
Preciso usar algumas coisas criadas no meu módulo VPC (IDs de sub-rede) ao criar máquinas EC2. Meu entendimento é que você não pode fazer referência a algo de um módulo em outro, então estou tentando usar uma variável de saída do módulo VPC.
Eu tenho o seguinte no meu sitemain.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
simplesmente define alguns valores e usa meu 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"
}
No meu vpc main.tf, tenho o seguinte no final, após oaws_vpc
eaws_subnet
recursos (mostrando o recurso de sub-rede):
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}"
}
Quando eu corroterraform plan
Eu recebi a seguinte mensagem de erro:
Erro: módulo 'vpc': "subnetid" não é uma saída válida para o módulo "vpc"