ELB Module

Provides an Elastic Load Balancer resource.

https://www.terraform.io/docs/providers/aws/r/elb.html

Input Variables, required

Variable Description Default Value
availability_zones (Required for an EC2-classic ELB) The AZ's to serve traffic in. -
subnets (Required for a VPC ELB) A list of subnet IDs to attach to the ELB. -
listener (Required) A list of listener blocks. -

Input Variables, optional

Variable Description Default Value
name (Optional) The name of the ELB. By default generated by Terraform. -
name_prefix (Optional, Forces new resource) Creates a unique name beginning with the specified prefix. Conflicts with name. -
access_logs (Optional) An Access Logs block. Access Logs documented below. -
security_groups (Optional) A list of security group IDs to assign to the ELB. -
instances (Optional) A list of instance ids to place in the ELB pool. -
internal (Optional) If true, ELB will be an internal ELB. -
health_check (Optional) A health_check block. -
cross_zone_load_balancing (Optional) Enable cross-zone load balancing. true
idle_timeout (Optional) The time in seconds that the connection is allowed to be idle. 60
connection_draining (Optional) Boolean to enable connection draining. false
connection_draining_timeout (Optional) The time in seconds to allow for connections to drain. 300
tags (Optional) A mapping of tags to assign to the resource. -

Exactly one of availability_zones or subnets must be specified: this determines if the ELB exists in a VPC or in EC2-classic.

Output Variables

Variable Description
id The name of the ELB
name The name of the ELB
dns_name The DNS name of the ELB
instances The list of instances in the ELB
source_security_group The name of the security group that you can use as part of your inbound rules for your load balancer's back-end application instances. Use this for Classic or Default VPC only.
source_security_group_id The ID of the security group that you can use as part of your inbound rules for your load balancer's back-end application instances. Only available on ELBs launched in a VPC.
zone_id The canonical hosted zone ID of the ELB (to be used in a Route 53 Alias record)

Example Usage

# Create a new load balancer
resource "aws_elb" "bar" {
  source = "github.com/monotype/infra-terraform//modules//elb"
  name               = "foobar-terraform-elb"
  availability_zones = ["us-west-2a", "us-west-2b", "us-west-2c"]

  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                   = ["${aws_instance.foo.id}"]
  cross_zone_load_balancing   = true
  idle_timeout                = 400
  connection_draining         = true
  connection_draining_timeout = 400

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