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»

Ответы на вопрос(1)

Ваш ответ на вопрос