class KnuckleCluster::AsgInstanceRegistry
Attributes
asg_name[R]
aws_client_config[R]
Public Class Methods
new(aws_client_config:, asg_name:)
click to toggle source
# File lib/knuckle_cluster/asg_instance_registry.rb, line 9 def initialize(aws_client_config:, asg_name:) @aws_client_config = aws_client_config @asg_name = asg_name end
Public Instance Methods
agents()
click to toggle source
# File lib/knuckle_cluster/asg_instance_registry.rb, line 14 def agents @agents ||= load_agents end
output_agents()
click to toggle source
# File lib/knuckle_cluster/asg_instance_registry.rb, line 18 def output_agents tp agents, :index, :instance_id, # :public_ip, :private_ip, :availability_zone end
Private Instance Methods
autoscaling_client()
click to toggle source
# File lib/knuckle_cluster/asg_instance_registry.rb, line 58 def autoscaling_client @autoscaling_client ||= ::Aws::AutoScaling::Client.new(aws_client_config) end
ec2_client()
click to toggle source
# File lib/knuckle_cluster/asg_instance_registry.rb, line 54 def ec2_client @ec2_client ||= ::Aws::EC2::Client.new(aws_client_config) end
load_agents()
click to toggle source
# File lib/knuckle_cluster/asg_instance_registry.rb, line 31 def load_agents auto_scaling_instances = autoscaling_client.describe_auto_scaling_groups(auto_scaling_group_names: [@asg_name]).to_h if auto_scaling_instances[:auto_scaling_groups].empty? puts "Could not find auto scaling group '#{asg_name}' in region #{aws_client_config[:region]}." exit(0) end instance_ids = auto_scaling_instances[:auto_scaling_groups][0][:instances].map{|instance| instance[:instance_id]} instance_reservations = ec2_client.describe_instances(instance_ids: instance_ids).reservations instance_reservations.map(&:instances).flatten.map.with_index do |instance, index| Agent.new( index: index + 1, instance_id: instance[:instance_id], public_ip: instance[:public_ip_address], private_ip: instance[:private_ip_address], availability_zone: instance.dig(:placement, :availability_zone), ) end end