class Mina::EC2
Constants
- VERSION
Attributes
ec2[RW]
project_tag[R]
Public Class Methods
new(tags, project_tag, settings)
click to toggle source
# File lib/mina/ec2.rb, line 9 def initialize(tags, project_tag, settings) @tags = tags @project_tag = project_tag @ec2 = {} settings[:regions].each do |region| @ec2[region] = ec2_connect( region: region, access_key_id: settings[:access_key_id], secret_access_key: settings[:secret_access_key] ) end end
Public Instance Methods
ec2_connect(region: nil, access_key_id:, secret_access_key:)
click to toggle source
# File lib/mina/ec2.rb, line 23 def ec2_connect(region: nil, access_key_id:, secret_access_key:) AWS.start_memoizing AWS::EC2.new( access_key_id: access_key_id, secret_access_key: secret_access_key, region: region ) end
get_domain(instance)
click to toggle source
# File lib/mina/ec2.rb, line 45 def get_domain(instance) instance.public_dns_name || instance.public_ip_address || instance.private_ip_address end
get_servers()
click to toggle source
# File lib/mina/ec2.rb, line 32 def get_servers servers = [] @ec2.each do |_, ec2| instances = ec2.instances .filter(tag(project_tag), "*#{project}*") .filter('instance-state-name', 'running') servers << instances.select do |i| verify_instance_tags(i) end end servers.flatten.sort_by {|s| s.tags["Name"] || ''} end
project()
click to toggle source
# File lib/mina/ec2.rb, line 53 def project tags[project_tag] end
tag(tag_name)
click to toggle source
# File lib/mina/ec2.rb, line 49 def tag(tag_name) "tag:#{tag_name}" end
Private Instance Methods
get_regions(regions=nil)
click to toggle source
# File lib/mina/ec2.rb, line 58 def get_regions(regions=nil) unless regions.nil? || regions.empty? return regions else @ec2 = ec2_connect @ec2.regions.map(&:name) end end