main.tf
аюсь настроить IaC для нового проекта, используя Hashicorp Terraform на AWS. Я использую модули, потому что хочу иметь возможность многократно использовать вещи в разных средах (staging, prod, dev и т. Д.)
Я изо всех сил пытаюсь понять, где я должен установить выходную переменную в модуле, и как я тогда использую это в другом модуле. Любые указатели на это будут с благодарностью!
Мне нужно использовать некоторые вещи, созданные в моем модуле VPC (идентификаторы подсетей) при создании машин EC2. Насколько я понимаю, вы не можете ссылаться на что-то из одного модуля в другом, поэтому я пытаюсь использовать выходную переменную из модуля VPC.
У меня на сайте есть следующееmain.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
просто устанавливает некоторые значения и использует мой модуль 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"
}
В моем vpc main.tf у меня есть следующее в самом конце, послеaws_vpc
а такжеaws_subnet
ресурсы (с указанием ресурса подсети):
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}"
}
Когда я бегуterraform plan
Я получаю следующее сообщение об ошибке:
Ошибка: модуль «vpc»: «subnetid» не является допустимым выводом для модуля «vpc»