Home

Awesome

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

<!-- BEGIN_TF_DOCS -->

Requirements

NameVersion
<a name="requirement_terraform"></a> terraform>= 1.0

Providers

No providers.

Modules

NameSourceVersion
<a name="module_elb"></a> elb./modules/elbn/a
<a name="module_elb_attachment"></a> elb_attachment./modules/elb_attachmentn/a

Resources

No resources.

Inputs

NameDescriptionTypeDefaultRequired
<a name="input_access_logs"></a> access_logsAn access logs blockmap(string){}no
<a name="input_connection_draining"></a> connection_drainingBoolean to enable connection drainingboolfalseno
<a name="input_connection_draining_timeout"></a> connection_draining_timeoutThe time in seconds to allow for connections to drainnumber300no
<a name="input_create_elb"></a> create_elbCreate the elb or notbooltrueno
<a name="input_cross_zone_load_balancing"></a> cross_zone_load_balancingEnable cross-zone load balancingbooltrueno
<a name="input_health_check"></a> health_checkA health check blockmap(string)n/ayes
<a name="input_idle_timeout"></a> idle_timeoutThe time in seconds that the connection is allowed to be idlenumber60no
<a name="input_instances"></a> instancesList of instances ID to place in the ELB poollist(string)[]no
<a name="input_internal"></a> internalIf true, ELB will be an internal ELBboolfalseno
<a name="input_listener"></a> listenerA list of listener blockslist(map(string))n/ayes
<a name="input_name"></a> nameThe name of the ELBstringnullno
<a name="input_name_prefix"></a> name_prefixThe prefix name of the ELBstringnullno
<a name="input_number_of_instances"></a> number_of_instancesNumber of instances to attach to ELBnumber0no
<a name="input_security_groups"></a> security_groupsA list of security group IDs to assign to the ELBlist(string)n/ayes
<a name="input_subnets"></a> subnetsA list of subnet IDs to attach to the ELBlist(string)n/ayes
<a name="input_tags"></a> tagsA mapping of tags to assign to the resourcemap(string){}no

Outputs

NameDescription
<a name="output_elb_arn"></a> elb_arnThe ARN of the ELB
<a name="output_elb_dns_name"></a> elb_dns_nameThe DNS name of the ELB
<a name="output_elb_id"></a> elb_idThe name of the ELB
<a name="output_elb_instances"></a> elb_instancesThe list of instances in the ELB
<a name="output_elb_name"></a> elb_nameThe name of the ELB
<a name="output_elb_source_security_group_id"></a> elb_source_security_group_idThe ID of the security group that you can use as part of your inbound rules for your load balancer's back-end application instances
<a name="output_elb_zone_id"></a> elb_zone_idThe canonical hosted zone ID of the ELB (to be used in a Route 53 Alias record)
<!-- END_TF_DOCS -->

Authors

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

License

Apache 2 Licensed. See LICENSE for full details.