Sha256: a72439688abf45ffa909e738ff773f757c6a8ce859e567801f41e3c2a32f125c
Contents?: true
Size: 1.29 KB
Versions: 2
Compression:
Stored size: 1.29 KB
Contents
require 'aws-sdk' require 'ec2ssh/dotfile' module Ec2ssh class AwsEnvNotDefined < StandardError; end class Hosts def initialize(dotfile, keyname) @dotfile = dotfile @ec2 = Hash.new do |h,region| key = dotfile.aws_key(keyname) raise AwsEnvNotDefined if key['access_key_id'].empty? || key['secret_access_key'].empty? h[region] = AWS::EC2.new( :ec2_endpoint => "#{region}.ec2.amazonaws.com", :access_key_id => key['access_key_id'], :secret_access_key => key['secret_access_key'] ) end end def all @dotfile['regions'].map {|region| process_region region }.flatten end private def process_region(region) instances(region).map {|instance| name_tag = instance[:tag_set].find {|tag| tag[:key] == 'Name' } next nil if name_tag.nil? || name_tag[:value].empty? name = name_tag[:value] dns_name = instance[:dns_name] or next nil {:host => "#{name}.#{region}", :dns_name => dns_name} }.compact.sort {|a,b| a[:host] <=> b[:host] } end def instances(region) response = @ec2[region].instances.tagged('Name').filtered_request(:describe_instances) response[:instance_index].values end end end
Version data entries
2 entries across 2 versions & 1 rubygems
Version | Path |
---|---|
ec2ssh-2.0.1 | lib/ec2ssh/hosts.rb |
ec2ssh-2.0.0 | lib/ec2ssh/hosts.rb |