Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/tongueroo/cloud_info

easily update the servers for ey cloud capistrano deployments
https://github.com/tongueroo/cloud_info

Last synced: about 1 month ago
JSON representation

easily update the servers for ey cloud capistrano deployments

Awesome Lists containing this project

README

        

CloudInfo
=======

Summary
-------
Assumes you're using engineyard's amazon could. Allows you to use capistrano deployments to engineyard's amazon cloud without having to update your capistrano deploy.rb every time you add in instances in their gui.

Install
-------


sudo gem install cloud_info --source http://gemcutter.org

Set up your ~/.ey-cloud.yml file.
Set up your ~/.ssh/id-rsa-flex-key private key.

Usage
-------

in your deploy.rb


require 'cloud_info'

task :production do
ey_env_name = "prod1" # this is the environment name in EY's gui interface
cloud_info = CloudInfo.new(ey_env_name, :private_key => "~/.ssh/id-rsa-flex-key")

role :db, cloud_info.app_master, :primary => true
# web and app slices
cloud_info.apps.each do |info|
role :web, info[1]
role :app, info[1], :sphinx => true
end

# utility slices
cloud_info.utils.each do |info|
role :app, info[1], :sphinx => true
end

set :environment_database, Proc.new { production_database }
set :user, 'deploy'
set :runner, 'deploy'
set :rails_env, 'production'
end

To look at what the hosts contain use script/console. cloud_info.apps, cloud_info.utils just holds a hash of keys and dns_names.


./script/console

require "cloud_info"
cloud_info = CloudInfo.new("prod1")
pp cloud_info.apps
{
"prod1_app0" => '123.456.789.123',
"prod1_app1" => 'ec-123.456.789.123.whatever'
}

pp cloud_info.hosts # shows all hosts
{
"prod1_app0" => '123.456.789.123', # app_master
"prod1_app1" => 'ec-123.456.789.123.whatever', # app
"prod1_db0" => 'ec-123.456.789.123.whatever', # db_master
"prod1_db1" => 'ec-123.456.789.123.whatever', # db_slave
"prod1_util0" => 'ec-123.456.789.123.whatever', # util instance, name util0
}

Compatibility
-------------

Tested with Ruby 1.8.6.

Thanks
------