= engineyard-metadata
Presents a simple, unchanging interface to get metadata about your EngineYard AppCloud instances running on Amazon EC2.
== Purpose
To define an unchanging interface to useful metadata (passwords, IP addresses, etc.) that is otherwise buried deep inside EngineYard's chef config files and various API calls.
== Examples
* Get a dynamically updated list of all running app servers so that you can pool memcached over all of them. (EY::Metadata.app_servers)
* Get the current database password so that you can write a script that connects to it. (EY::Metadata.database_password)
Get the full method list in {the engineyard-metadata rdoc}[http://rdoc.info/github/seamusabshere/engineyard-metadata].
== Use
=== From the inside
When you're executing the gem from your instances, you don't have to configure anything. Just require the gem.
=== From the outside
You need to provide...
* ENV['EY_CLOUD_TOKEN'] or have ~/.eyrc
* ENV['REPOSITORY_URI'] or execute the gem from the local copy of your application's repo.
=== Where the methods are defined
Metadata getters are defined directly on EY::Metadata (which in turn delegates out to various adapters). Even if EngineYard changes the structure of the config files or Amazon EC2's API changes, these methods will stay the same.
[...]
>> require 'rubygems'
[...]
>> require 'engineyard-metadata'
[...]
>> EY::Metadata.database_host
=> "external_db_master.compute-1.amazonaws.com"
>> EY::Metadata.app_servers
=> [ 'app_1.compute-1.amazonaws.com' , 'app_master.compute-1.amazonaws.com' ]
>> EY::Metadata.db_servers
=> [ 'db_master.compute-1.amazonaws.com', 'db_slave_1.compute-1.amazonaws.com' ]
[...and many more...]
== History
This is the second generation of http://rubygems.org/gems/ey_cloud_awareness.
== Copyright
Copyright (c) 2010 Seamus Abshere. See LICENSE for details.