class Akashi::Elb::LoadBalancer

Public Class Methods

create(security_group:, subnets:, ssl_certificate:) click to toggle source
# File lib/akashi/elb/load_balancer.rb, line 16
def create(security_group:, subnets:, ssl_certificate:)
  Akashi::Aws.elb.client.create_load_balancer(
    load_balancer_name: Akashi.name,
    security_groups:    [ security_group.id ],
    subnets:            Array.wrap(subnets).map(&:id),
    listeners:          [
      {
        protocol:           "HTTPS",
        load_balancer_port: 443,
        instance_protocol:  "HTTP",
        instance_port:      80,
        ssl_certificate_id: ssl_certificate.arn,
      },
      {
        protocol:           "HTTP",
        load_balancer_port: 80,
        instance_protocol:  "HTTP",
        instance_port:      80,
      },
    ],
  )

  new(Akashi.name).tap do |instance|
    instance.modify_attributes(
      load_balancer_attributes: {
        cross_zone_load_balancing: {
          enabled: true,
        },
        connection_draining: {
          enabled: true,
          timeout: 300,
        },
      },
    )
    instance.configure_health_check(
      target:              Akashi.manifest.elb.health_check.target,
      interval:            60,
      timeout:             30,
      unhealthy_threshold: 2,
      healthy_threshold:   2,
    )
    puts "Created a LoadBalancer (#{instance.name})."
  end
end

Public Instance Methods

modify_attributes(options) click to toggle source
# File lib/akashi/elb/load_balancer.rb, line 6
def modify_attributes(options)
  Akashi::Aws.elb.client.
    modify_load_balancer_attributes(options.merge({ load_balancer_name: name }))
end
register_instances(instances) click to toggle source
# File lib/akashi/elb/load_balancer.rb, line 11
def register_instances(instances)
  @object.instances.register(Array.wrap(instances).map(&:id))
end