Попытка создать внутренний балансировщик нагрузки приложения с помощью Terraform - PullRequest
0 голосов
/ 03 января 2019

Я начал использовать Terraforms только недавно.Я пытаюсь создать внутренний балансировщик нагрузки с помощью terraforms.Может кто-нибудь подсказать мне, как это сделать, потому что, когда я запускаю скрипт terraform, он выдает ошибку, указывающую, что внутренний балансировщик нагрузки должен быть создан внутри VPC.Я понял, потому что внутренний балансировщик нагрузки будет иметь частную подсеть.Как предоставить идентификатор VPC при создании внутреннего балансировщика нагрузки?

provider "aws" {
region = "ap-south-1"
}

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

   provider "aws" {
  region = "ap-south-1"
  }

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

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

   azs             = ["ap-south-1a", "ap-south-1b"]
   private_subnets = ["10.0.1.0/24", "10.0.2.0/24"]

   enable_nat_gateway = true
   enable_vpn_gateway = true

   tags = {
     Terraform = "true"
     Environment = "dev"
   }
  }

  resource "aws_elb" "bar" {
   name               = "foobar-terraform-elb"
   availability_zones = ["ap-south-1"]
   internal = true

   access_logs {
     bucket        = "foo"
     bucket_prefix = "bar"
     interval      = 60
   }

   listener {
     instance_port     = 8000
     instance_protocol = "http"
     lb_port           = 80
     lb_protocol       = "http"
   }

   listener {
     instance_port      = 8000
     instance_protocol  = "http"
     lb_port            = 443
     lb_protocol        = "https"
     ssl_certificate_id = "arn:aws:iam::123456789012:server-certificate/certName"
   }

   health_check {
     healthy_threshold   = 2
     unhealthy_threshold = 2
     timeout             = 3
     target              = "HTTP:8000/"
     interval            = 30
   }

   instances                   = ["i-xxxxxxxxxxxxxxx"]
   cross_zone_load_balancing   = true
   idle_timeout                = 400
   connection_draining         = true
   connection_draining_timeout = 400

   tags = {
     Name = "foobar-terraform-elb"
   }
  }

Ответы [ 2 ]

0 голосов
/ 03 января 2019

Частные подсети являются частью VPC, и terraform ожидает список подсетей для создания ELB в VPC.См .: https://www.terraform.io/docs/providers/aws/r/elb.html#subnets

Вы можете обновить свой код aws_elb как

resource "aws_elb" "bar" {
   name               = "foobar-terraform-elb"
   subnets = ["subnet-1-id"]

   # If you need multiple subnets then provide value as follow
   # subnets = ["subnet-1-id", "subnet-2-id"]

   internal = true

   access_logs {
     bucket        = "foo"
     bucket_prefix = "bar"
     interval      = 60
   }

   listener {
     instance_port     = 8000
     instance_protocol = "http"
     lb_port           = 80
     lb_protocol       = "http"
   }

   listener {
     instance_port      = 8000
     instance_protocol  = "http"
     lb_port            = 443
     lb_protocol        = "https"
     ssl_certificate_id = "arn:aws:iam::123456789012:server-certificate/certName"
   }

   health_check {
     healthy_threshold   = 2
     unhealthy_threshold = 2
     timeout             = 3
     target              = "HTTP:8000/"
     interval            = 30
   }

   instances                   = ["i-xxxxxxxxxxxxxxx"]
   cross_zone_load_balancing   = true
   idle_timeout                = 400
   connection_draining         = true
   connection_draining_timeout = 400

   tags = {
     Name = "foobar-terraform-elb"
   }
  }

Надеюсь, это поможет

0 голосов
/ 03 января 2019

Вам необходимо использовать параметр subnets, предоставленный Terraform, для создания внутреннего балансировщика нагрузки.

В вашем случае это может быть

resource "aws_elb" "bar" {
   ...
   subnets = "${module.vpc.private_subnets}"
   ...
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...