= 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) Here's the current method list: EY::Metadata.present_instance_id (only works from cloud instances) EY::Metadata.present_security_group (only works from cloud instances) EY::Metadata.present_instance_role (only works from cloud instances) EY::Metadata.present_public_hostname (only works from cloud instances) EY::Metadata.database_password (only works from cloud instances) EY::Metadata.database_username EY::Metadata.database_name EY::Metadata.database_host EY::Metadata.ssh_username EY::Metadata.ssh_password (only works from cloud instances) EY::Metadata.app_servers EY::Metadata.db_servers EY::Metadata.utilities EY::Metadata.app_master EY::Metadata.db_master EY::Metadata.mysql_command (only works from cloud instances) EY::Metadata.mysqldump_command (only works from cloud instances) EY::Metadata.app_slaves EY::Metadata.db_slaves EY::Metadata.solo EY::Metadata.environment_name EY::Metadata.stack_name EY::Metadata.repository_uri == Use See the rdoc at {the engineyard-metadata rdoc}[http://rubydoc.info/gems/engineyard-metadata]. === When you're executing this gem from INSIDE the cloud When you're executing the gem from your instances, you don't have to configure anything. Just require the gem. === When you're executing this gem from OUTSIDE the cloud You must... * have ~/.eyrc or set EY::Metadata.ey_cloud_token= or set ENV['EY_CLOUD_TOKEN']. * execute the gem from the local copy of your application's repo or set EY::Metadata.environment_name= or set ENV['EY_ENVIRONMENT_NAME']. === 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.