class Tsudura::Aws::LaunchConfig

Public Class Methods

new(image_id, config, timestamp) click to toggle source
# File lib/tsudura/aws/launch_config.rb, line 5
def initialize(image_id, config, timestamp)
  @image_id = image_id
  @config = config
  @timestamp = timestamp
end

Public Instance Methods

create() click to toggle source
# File lib/tsudura/aws/launch_config.rb, line 17
def create
  @new_launch_config = autoscaling.create_launch_configuration(options)
end
delete() click to toggle source
# File lib/tsudura/aws/launch_config.rb, line 21
def delete
  unless unavailable_launch_configurations.empty?
    unavailable_launch_configurations.each do |launch_configuration_name|
      autoscaling.delete_launch_configuration(launch_configuration_name: launch_configuration_name)
    end
  end
end
options() click to toggle source
# File lib/tsudura/aws/launch_config.rb, line 11
def options
  option = base_option
  option[:iam_instance_profile] = @config[:iam_instance_profile] if @config[:iam_instance_profile]
  option
end

Private Instance Methods

all_launch_configurations() click to toggle source
# File lib/tsudura/aws/launch_config.rb, line 46
def all_launch_configurations
  tmp = []

  autoscaling.describe_launch_configurations.each_page { |i| tmp.concat i.launch_configurations }
  tmp.select { |i| i[:launch_configuration_name] =~ /#{@config[:service]}-#{short_env}/ }.map(&:launch_configuration_name)
end
autoscaling() click to toggle source
# File lib/tsudura/aws/launch_config.rb, line 31
def autoscaling
  @autoscaling ||= ::Aws::AutoScaling::Client.new(region: @config[:region])
end
available_launch_configurations() click to toggle source
# File lib/tsudura/aws/launch_config.rb, line 39
def available_launch_configurations
  tmp = []

  autoscaling.describe_auto_scaling_groups.each_page { |i| tmp.concat i.auto_scaling_groups }
  tmp.select { |i| i[:launch_configuration_name] =~ /#{@config[:service]}-#{short_env}/ }.map(&:launch_configuration_name).uniq
end
base_option() click to toggle source
# File lib/tsudura/aws/launch_config.rb, line 53
def base_option
  {
    image_id: @image_id,
    key_name: @config[:key_name],
    user_data: Base64.encode64(@config[:user_data_script]),
    instance_type: @config[:instance_type],
    security_groups: [@config[:security_group_id]],
    launch_configuration_name: "#{@config[:service]}-#{short_env}-#{@timestamp}",
  }
end
unavailable_launch_configurations() click to toggle source
# File lib/tsudura/aws/launch_config.rb, line 35
def unavailable_launch_configurations
  @unavailable_launch_configurations ||= all_launch_configurations - available_launch_configurations
end