Skip to content

Instantly share code, notes, and snippets.

@jordanbrock
Created November 22, 2011 01:17
Show Gist options
  • Save jordanbrock/1384584 to your computer and use it in GitHub Desktop.
Save jordanbrock/1384584 to your computer and use it in GitHub Desktop.
EC2 Capistrano Methods
require 'AWS'
...
role (:app) { instance_ip_addresses(SERVER_TAG) }
....
def aws_connect()
ENV['EC2_URL'] = AWS_URL
AWS::EC2::Base.new(:access_key_id => AWS_ACCESS_KEY, :secret_access_key => AWS_SECRET_KEY)
end
def instance_state(server_tag=nil)
ec2 = aws_connect
servers = ec2.describe_instances.reservationSet.item.collect do |itemgroup|
itemgroup.instancesSet.item.collect do |item|
item.tagSet.item.collect{|tagSet| {:instanceId => item.instanceId, :ipAddress => item.ipAddress, :value => tagSet.value, :status => item.instanceState.name}}
end
end
if server_tag.nil?
instances = servers.flatten.collect{|server| {:instanceId => server.instanceId, :ipAddress => server.ipAddress, :status => server.status }}
else
instances = servers.flatten.collect{|server| {:instanceId => server.instanceId, :ipAddress => server.ipAddress, :status => server.status } if server.value == server_tag}
end
instances.delete(nil)
instances.uniq
end
def instance_ip_addresses(server_tag=nil)
ec2 = aws_connect
servers = ec2.describe_instances.reservationSet.item.collect do |itemgroup|
itemgroup.instancesSet.item.collect do |item|
item.tagSet.item.collect{|tagSet| {:instanceId => item.instanceId, :ipAddress => item.ipAddress, :value => tagSet.value}}
end
end
if server_tag.nil?
instances = servers.flatten.collect{|server| server.ipAddress}
else
instances = servers.flatten.collect{|server| server.ipAddress if server.value == server_tag}
end
instances.delete(nil)
instances
end
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment