Created
June 6, 2013 17:33
-
-
Save mv/5723325 to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
require 'aws-sdk' | |
AWS.config({ | |
:access_key_id => ENV['AWS_ACCESS_KEY_ID'], | |
:secret_access_key => ENV['AWS_SECRET_ACCESS_KEY'], | |
:region => 'sa-east-1' | |
}) | |
ec2 = AWS::EC2.new | |
# Regions | |
## name | |
region_name_list = ec2.regions.collect(&:name) | |
## endpoint | |
region_endpoint_list = ec2.regions.collect(&:endpoint) | |
## in a hash | |
region = ec2.regions.inject({}) { |m,r| m[r.name] = r.endpoint ; m} | |
# Availability Zones | |
## AZs to my current region | |
current_az_list = ec2.availability_zones.collect(&:name) | |
## AZs to a specific region | |
az_list = ec2.regions['sa-east-1'].availability_zones.collect(&:name) | |
## all AZs | |
ec2.regions.each do |r| | |
puts "#{r.name} " | |
r.availability_zones.each do |az| | |
puts " #{az.name}" | |
end | |
end | |
# Instances | |
## instaces to my current region | |
current_region_instance_list = ec2.instances.collect(&:id) | |
## instances to a specific region | |
instance_region_list = ec2.regions['sa-east-1'].instances.collect(&:id) | |
## all instances in all regions | |
ec2.regions.each do |r| | |
puts "Region: #{r.name}" | |
r.instances.each do |i| | |
puts " instance: #{i.id}, #{i.availability_zone}, #{i.status}, #{i.instance_type}, #{i.tags['Name']}" | |
end | |
end | |
# Security Groups | |
## sgs to my current region | |
current_sg_region_list = ec2.security_groups.collect(&:name).sort | |
## sgs to a specific region | |
sg_region_list = ec2.regions['sa-east-1'].security_groups.collect(&:name).sort | |
## All security_groups and instances | |
ec2.regions.each do |r| | |
puts "Region: #{r.name}" | |
r.security_groups.each do |sg| | |
puts " sg: #{sg.owner_id}, #{sg.id}, #{sg.name}, #{sg.description}" | |
sg.instances.each do |i| | |
puts " instance: #{i.id}, #{i.availability_zone}, #{i.status}, #{i.instance_type}, #{i.tags['Name']}" | |
end | |
end | |
end | |
# ELB | |
elb = AWS::ELB.new | |
## all elb's | |
elb_list = elb.load_balancers.collect(&:name) | |
## all elb's and instances | |
elb.load_balancers.each do |elb| | |
# printf "elb: %70s, %s\n", elb.dns_name, elb.name | |
printf "elb: %s, %s\n", elb.dns_name, elb.name | |
elb.instances.each do |i| | |
puts " instance: #{i.id}, #{i.availability_zone}, #{i.status}, #{i.instance_type}, #{i.tags['Name']}" | |
end | |
end | |
# AutoScaling | |
as = AWS::AutoScaling.new | |
## all as groups | |
as_list = as.groups.collect(&:name) | |
as.groups.each do |asg| | |
puts "as: #{asg.name}, lc_config: #{asg.launch_configuration_name}, min: #{asg.min_size}, max: #{asg.max_size}" | |
asg.auto_scaling_instances.each do |ai| | |
i = as.instances[ ai.id ].ec2_instance | |
puts " instance: #{i.id}, #{i.availability_zone}, #{i.status}, #{i.instance_type}, #{i.tags['Name']}" | |
end | |
end | |
## activities | |
as.activities.each do |a| | |
printf "%s - %s: %s / [%s] %s, %s, %s\n", a.start_time, a.end_time, a.auto_scaling_group_name, a.progress, a.status_code, a.status_message, a.description | |
end | |
# vim:ft=ruby: | |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment