Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                
Skip to content
This repository has been archived by the owner on May 19, 2020. It is now read-only.
/ ey_aws Public archive

Retrieve environment and host information from your Engine Yard account, providing detailed information for each EC2 instance.

License

Notifications You must be signed in to change notification settings

hooroo/ey_aws

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

15 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

EYAWS

ey_aws will connect EngineYard and AWS to and retrieve environment and instance data from both, this allows us to view which environments we have and metadata for each instance which makes up each enironment. It can be useful to find out instance sizes, IP addresses and attached storage for each running instance.

Installation

gem install ey_aws

Usage

This gem may be used from the command line to display a formatted Hash describing all your environments and instances. If running from the command line you must set some environment variables before executing ey_aws.

ACCESS_KEY_ID/SECRET_ACCESS_KEY are required for AWS authentication, and EY_CLOUD_TOKEN (which can be found in ~/.eyrc) for EngineYard.

From the command line

export ACCESS_KEY_ID='...'
export SECRET_ACCESS_KEY='...'
export EY_CLOUD_TOKEN='...'
ey_aws

Or from your application

require 'ey_aws'

data = EYAWS.new({
  :access_key_id     => 'AWS_ACCESS_KEY',
  :secret_access_key => 'AWS_SECRET_KEY',
  :ey_cloud_token    => 'EY_CLOUD_TOKEN' })

pp data[:environments]

Output

{:id=>12345,
  :name=>"environment_name",
  :ssh_username=>"deploy",
  :app_server_stack_name=>"nginx_unicorn",
  :framework_env=>"production",
  :instance_status=>"running",
  :instances_count=>2,
  :load_balancer_ip_address=>"12.34.45.67",
  :account=>{:id=>1234, :name=>"account"},
  :stack_name=>"nginx_unicorn",
  :instances=>
   [{:id=>"i-sd9d123d2",
     :status=>:running,
     :role=>"app_master",
     :name=>nil,
     :amazon_id=>"i-3d932j233",
     :public_hostname=> "ec2-xx-xx-xx-xx.ap-northeast-1.compute.amazonaws.com",
     :bridge=>true,
     :ami_launch_index=>0,
     :architecture=>:i386,
     :client_token=>nil,
     :dns_name=>"ec2-xx-xx-xx-xx.ap-northeast-1.compute.amazonaws.com",
     :hypervisor=>:xen,
     :image_id=>"ami-12dj883",
     :instance_type=>"c1.medium",
     :ip_address=>"12.23.23.34",
     :kernel_id=>"aki-dc09a2dd",
     :key_name=>nil,
     :launch_time=>2012-06-13 23:14:52 UTC,
     :monitoring=>:disabled,
     :owner_id=>"259285985555",
     :platform=>nil,
     :private_dns_name=>"ip-10-0-0-127.ap-northeast-1.compute.internal",
     :private_ip_address=>"10.0.0.127",
     :ramdisk_id=>nil,
     :requester_id=>nil,
     :reservation_id=>"r-72313355",
     :root_device_name=>nil,
     :root_device_type=>:instance_store,
     :state_transition_reason=>nil,
     :status_code=>16,
     :subnet_id=>nil,
     :virtualization_type=>:paravirtual,
     :vpc_id=>nil,
     :availability_zone=>"ap-northeast-1a",
     :dedicated_tenancy?=>false,
     :exists?=>true,
     :has_elastic_ip?=>true,
     :monitoring_enabled?=>false,
     :spot_instance?=>false,
     :key_pair=>nil,
     :block_device_mappings=>
      [{:device=>"/dev/sdz1",
        :attach_time=>2012-06-13 23:15:59 UTC,
        :delete_on_termination?=>false,
        :exists?=>true,
        :status=>:attached,
        :volume=>
         {:id=>"vol-dbafs2eba",
          :availability_zone_name=>"ap-northeast-1a",
          :create_time=>2012-06-13 23:15:55 UTC,
          :size=>5,
          :status=>:in_use,
          :exists?=>true}}]}],
  :app_master=>
   {:id=>153125,
    :status=>"running",
    :role=>"app_master",
    :name=>nil,
    :amazon_id=>"i-hf923h9f",
    :public_hostname=>"ec2-xx-xx-xx-xx.ap-northeast-1.compute.amazonaws.com",
    :bridge=>true},
  :apps=>
   [{:id=>15085,
     :name=>"appname",
     :repository_uri=>"git@github.com:org/repo.git",
     :app_type_id=>"rails3",
     :account=>{:id=>1234, :name=>"account"}}],
  :deployment_configurations=>
   {:appname=>
     {:id=>46952,
      :domain_name=>"environment.net",
      :uri=>"http://environment.net",
      :migrate=>{:perform=>false, :command=>""},
      :name=>"appname",
      :repository_uri=>"git@github.com:org/repo.git"}}}

Testing

bundle exec rake spec

Alternatives

An alternative to this gem is the engineyard-metadata gem which also provides similar functionality, engineyard-metadata also supports returning local data from the chef dna.json file when executed from an EC2 instance.

Known Issues

Y U SO SLOW? It couldn't hurt to help speed this library up, it will generally take about 60 seconds for a reasonably sized environment. This may be able to be helped by memoising the additional AWS calls.

Copyright

Copyright (c) 2012 Hooroo. See LICENSE for details.

About

Retrieve environment and host information from your Engine Yard account, providing detailed information for each EC2 instance.

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages