Назад | Перейти на главную страницу

Terraform: как сослаться на подсеть, созданную в модуле vpc

Как мне сослаться на подсеть, созданную в модуле vpc в модуле ec2?

provider "aws" {
  region = "us-east-2"
}

module "myvpc" {
  source = "terraform-aws-modules/vpc/aws"

  name = "my-vpc"
  cidr = "10.0.0.0/16"

  azs             = ["us-east-1a", "us-east-1b", "us-east-1c"]
  private_subnets = ["10.0.1.0/24", "10.0.2.0/24", "10.0.3.0/24"]
  public_subnets  = ["10.0.101.0/24", "10.0.102.0/24", "10.0.103.0/24"]

  assign_generated_ipv6_cidr_block = true

  enable_nat_gateway = true
  single_nat_gateway = true

  enable_s3_endpoint       = true
  enable_dynamodb_endpoint = true

  public_subnet_tags = {
    Name = "overridden-name-public"
  }

  tags = {
    Owner       = "user"
    Environment = "dev"
    Name        = "terraformtestvpc"
  }

  vpc_tags = {
    Name = "vpc-name"
  }
}

module "ssh_access_sg" {
  source = "terraform-aws-modules/security-group/aws//modules/ssh"

  name        = "ssh-access"
  description = "Security group for ssh access"
  vpc_id      = "${module.myvpc.vpc_id}"

  ingress_cidr_blocks = ["0.0.0.0/0"]
}

data "aws_ami" "amazon_linux" {
  most_recent = true

  filter {
    name = "name"

    values = [
      "amzn-ami-hvm-*-x86_64-gp2",
    ]
  }

  filter {
    name = "owner-alias"

    values = [
      "amazon",
    ]
  }
}

module "ec2" {
  source = "terraform-aws-modules/ec2-instance/aws"

  instance_count = 2

  name                        = "example-normal"
  ami                         = "${data.aws_ami.amazon_linux.id}"
  instance_type               = "t2.medium"
  subnet_id                   = "${element(module.myvpc.private_subnets, 0)}"
  vpc_security_group_ids      = ["${module.ssh_access_sg.this_security_group_id}"]
  associate_public_ip_address = true
}

Чтобы ссылаться на значение, созданное в модуле, вы должны output значение с соответствующим заявлением.

Затем вы можете получить доступ к значению с помощью ${module.NAME.OUTPUT}.

Подробнее см .: https://www.terraform.io/intro/getting-started/modules.html

Раздел Module Outputs и: https://www.terraform.io/intro/getting-started/outputs.html