GitHub Sale: sign up for any paid plan this week and pay nothing until January 1, 2009!  [ hide ]

public
Description: A capistrano/rails plugin that makes it easy to deploy/manage/scale to EC2 (moved from rubyforge)

Quick Start

You can follow these steps to create a demo app on a single instance

Create a simple rails project


rails rubbertest
cd rubbertest
./script/generate scaffold post title:string body:text

Install rubber


./script/plugin install git://github.com/wr0ngway/rubber.git
./script/generate vulcanize complete_mysql

The complete_mysql gnerator gives you a deployment setup which inludes nginx, mongrel_cluster, mysql (automatic master/slave replication if you create a second instance in the mysl_slave role) monit and munin.

Configure rubber

Edit config/rubber/rubber.yml. To do a simple demo, you need real values for these keys

  • aws_access_key
  • aws_secret_access_key
  • aws_account
  • ec2_key_name
  • ec2_key_file (See the FAQ if having connection issues.)

For a real app, you should go through all the settings in rubber.yml as well as the settings in rubber-MODULE.yml which contains settings specific to each MODULE (nginx, mongrel, etc)

Create, bootstrap, then deploy to instance


ALIAS=production ROLES=web,haproxy,app,mysql_master cap rubber:create
cap rubber:bootstrap
cap deploy:setup
cap deploy:cold

Then you should be able to browse to http://production.foo.com (uses /etc/hosts file, so need to set your own domain for the demo). Note that rubber:bootstrap should be idempotent, so feel free to run it multiple times in the event of a failure like a timeout getting gems from rubyforge.

As a convenience, you could instead run “cap rubber:create_staging” to automate the above for a single instance.

For a more complex production setup


ALIAS=web01 ROLES=web,haproxy cap rubber:create
ALIAS=app01 ROLES=app cap rubber:create
ALIAS=app02 ROLES=app cap rubber:create
ALIAS=db01 ROLES=mysql_master cap rubber:create
ALIAS=db02 ROLES=mysql_slave cap rubber:create
cap rubber:bootstrap
cap deploy:setup
cap deploy:cold

To add another app server to an existing deployment


ALIAS=app03 ROLES=app cap rubber:create
cap rubber:bootstrap
cap deploy

Last edited by wr0ngway, 22 days ago
Versions: