class Capistrano::Asg::LaunchConfiguration

Create launch configuration

Attributes

region_config[R]

Public Class Methods

create(ami, region_config = {}) { |lc| ... } click to toggle source
# File lib/capistrano/asg/launch_configuration.rb, line 7
def self.create(ami, region_config = {}, &_block)
  lc = new(region_config)
  lc.cleanup do
    lc.save(ami)
    yield lc
  end
end
new(region_config = {}) click to toggle source
# File lib/capistrano/asg/launch_configuration.rb, line 15
def initialize(region_config = {})
  @region_config = region_config
end

Public Instance Methods

attach_to_autoscale_group!() click to toggle source
# File lib/capistrano/asg/launch_configuration.rb, line 39
def attach_to_autoscale_group!
  info "Attaching Launch Configuration #{aws_counterpart.name} to AutoScaling Group #{autoscaling_group.name}"
  autoscaling_group.update(
    launch_configuration_name: aws_counterpart.name
  )
end
destroy(launch_configurations = []) click to toggle source
# File lib/capistrano/asg/launch_configuration.rb, line 46
def destroy(launch_configurations = [])
  launch_configurations.each do |lc|
    info "Deleting old Launch Configuration: #{lc.name}"
    lc.delete
  end
end
save(ami) click to toggle source
# File lib/capistrano/asg/launch_configuration.rb, line 19
def save(ami)
  info "Creating an EC2 Launch Configuration for AMI: #{ami.aws_counterpart.id}"
  ec2_instance = ec2_resource.instance(base_ec2_instance.id)

  with_retry do
    @aws_counterpart = autoscaling_resource.create_launch_configuration(
      launch_configuration_name: name,
      image_id: ami.aws_counterpart.id,
      instance_type: instance_size,
      security_groups: ec2_instance.security_groups.map(&:group_id),
      associate_public_ip_address: region_config.fetch(:aws_launch_configuration_associate_public_ip, true),
      instance_monitoring: {
        enabled: fetch(:aws_launch_configuration_detailed_instance_monitoring, true)
      },
      user_data: region_config.fetch(:aws_launch_configuration_user_data, nil),
      iam_instance_profile: ec2_instance.iam_instance_profile.arn
    )
  end
end

Private Instance Methods

deployed_with_asg?(lc) click to toggle source
# File lib/capistrano/asg/launch_configuration.rb, line 63
def deployed_with_asg?(lc)
  lc.name.include? region_config.fetch(:aws_lc_name_prefix, "cap-asg-#{environment}-#{autoscaling_group_name}-lc")
end
instance_size() click to toggle source
# File lib/capistrano/asg/launch_configuration.rb, line 59
def instance_size
  region_config.fetch(:aws_autoscale_instance_size, 'm1.small')
end
name() click to toggle source
# File lib/capistrano/asg/launch_configuration.rb, line 55
def name
  timestamp region_config.fetch(:aws_lc_name_prefix, "cap-asg-#{environment}-#{autoscaling_group_name}-lc")
end
trash() click to toggle source
# File lib/capistrano/asg/launch_configuration.rb, line 67
def trash
  autoscaling_resource.launch_configurations.to_a.select do |lc|
    deployed_with_asg? lc
  end
end