/terraform-aws-elb

Terraform module which creates ELB resources on AWS

Primary LanguageHCLApache License 2.0Apache-2.0

AWS Elastic Load Balancer (ELB) Terraform module

Terraform module which creates Classic Load Balancer (also called ELB) resources on AWS.

Usage

module "elb_http" {
  source  = "terraform-aws-modules/elb/aws"

  name = "elb-example"

  subnets         = ["subnet-12345678", "subnet-87654321"]
  security_groups = ["sg-12345678"]
  internal        = false

  listener = [
    {
      instance_port     = 80
      instance_protocol = "HTTP"
      lb_port           = 80
      lb_protocol       = "HTTP"
    },
    {
      instance_port     = 8080
      instance_protocol = "http"
      lb_port           = 8080
      lb_protocol       = "http"
      ssl_certificate_id = "arn:aws:acm:eu-west-1:235367859451:certificate/6c270328-2cd5-4b2d-8dfd-ae8d0004ad31"
    },
  ]

  health_check = {
    target              = "HTTP:80/"
    interval            = 30
    healthy_threshold   = 2
    unhealthy_threshold = 2
    timeout             = 5
  }

  access_logs = {
    bucket = "my-access-logs-bucket"
  }

  // ELB attachments
  number_of_instances = 2
  instances           = ["i-06ff41a77dfb5349d", "i-4906ff41a77dfb53d"]

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

Examples

Note about SSL

  • Valid SSL certificate has to be specified as ssl_certificate_id argument for secure listener. Use terraform-aws-acm module to create one.

Requirements

Name Version
terraform >= 1.0

Providers

No providers.

Modules

Name Source Version
elb ./modules/elb n/a
elb_attachment ./modules/elb_attachment n/a

Resources

No resources.

Inputs

Name Description Type Default Required
access_logs An access logs block map(string) {} no
connection_draining Boolean to enable connection draining bool false no
connection_draining_timeout The time in seconds to allow for connections to drain number 300 no
create_elb Create the elb or not bool true no
cross_zone_load_balancing Enable cross-zone load balancing bool true no
health_check A health check block map(string) n/a yes
idle_timeout The time in seconds that the connection is allowed to be idle number 60 no
instances List of instances ID to place in the ELB pool list(string) [] no
internal If true, ELB will be an internal ELB bool false no
listener A list of listener blocks list(map(string)) n/a yes
name The name of the ELB string null no
name_prefix The prefix name of the ELB string null no
number_of_instances Number of instances to attach to ELB number 0 no
security_groups A list of security group IDs to assign to the ELB list(string) n/a yes
subnets A list of subnet IDs to attach to the ELB list(string) n/a yes
tags A mapping of tags to assign to the resource map(string) {} no

Outputs

Name Description
elb_arn The ARN of the ELB
elb_dns_name The DNS name of the ELB
elb_id The name of the ELB
elb_instances The list of instances in the ELB
elb_name The name of the ELB
elb_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
elb_zone_id The canonical hosted zone ID of the ELB (to be used in a Route 53 Alias record)

Authors

Module is maintained by Anton Babenko with help from these awesome contributors.

License

Apache 2 Licensed. See LICENSE for full details.