Skip to content


Subversion checkout URL

You can clone with
Download ZIP
Fetching contributors…

Cannot retrieve contributors at this time

136 lines (87 sloc) 5.19 KB

Rudy - v0.6 ALPHA


Rudy is a command-line development and deployment tool for Amazon EC2. It helps you build and manage machines by organizing them into groups of environments and roles. stage is the default environment and app is the default machine role. You can run multiple machines with the same role. These are called positions. Rudy also supports running machine groups across availability zones.

When you put all this together, you have a unique name for every machine. The default machine is:

        zone     env  role
         v        v    v   
   ^                       ^
"machine"                position

All configuration is organized into the zones, environments, and roles that you specify (Rudy assumes positions are identical which is important for backups and scaling). And as you'd expect, the defaults can be changed too (in ~/.rudy/config). See below for usage examples.

Please note that Rudy is in ALPHA territory. That means it's not ready for production use!


Step 1 of 2 (get Rudy on to your machine):

Via Rubygems, one of:

$ sudo gem install rudy
$ sudo gem install solutious-rudy --source

or via download:

NOTE: If you are not installing via RubyGems, you need to make sure the Ruby dependencies (see the [README]( are installed and in your LOAD_PATH. Ryan Tomayko wrote [a gist]( about it.

Step 2 of 2 (initialize your configuration):

$ rudy generate-config
  [edit ~/.rudy/config with your Amazon Web Services credentials]
$ rudy init

NOTE: You need an Amazon account to use Rudy. Sign up for EC2 and SimpleDB.

Example 1 – The Basics

Before we get fancy, we'll cover the basics by using Rudy as a convenient replacement for the ec2-api tools. Let's create an instance, login via SSH, and then destroy it:

$ rudy machine --create  
$ rudy -u root ssh
$ rudy machine --destroy
  • rudy machine --create

    • Checks whether the security group stage-app is exists. If it doesn't exist, it will be created and the machine your on will be authorized to access ports 22, 80, and 443 (ssh, http, and https).

    • Checks for an SSH keypair called key-stage-app. If it doesn't exist, it creates it and writes the public and private keys to the directory containing your Rudy config file (~/.rudy)

    • Creates a new EC2 instance.

  • rudy -u root ssh

    • Opens an SSH session with the new machine instance. A password is not required because Rudy uses the keypair that is associated to this machine group.

  • rudy machine --destroy

    • Terminates the instance.

To find out what machines are running regardless of the group, use this command:

$ rudy status --all

Example 2 – The ad-hoc development environment

This example creates a machine group called dev-app, where “dev” is the name of the environment and “app” is the name of the machine role. Once we've defined this group, we'll be able to create it and destroy it willy nilly from the command-line.

In the top level of your project directory put the following configuration into a file called Rudyfile:

machines do

  environment :dev do
    ami "ami-235fba4a"  # Amazon Getting Started AMI (US)

    role :app do
      disks do
        path "/rudy/example1" do
          size 4
          device "/dev/sdr"




Common Errors

  • "`require': no such file to load -- amazon-ec2 (LoadError)"

    • You're probably running a mix of Rubygem and non-Rubygem libraries. Ryan Tomayko has you covered:

  • "The request signature we calculated does not match the signature you provided."

    • Check that your Amazon Web Service access key and secret key are correct

  • "AWS was not able to validate the provided access credentials"

    • If it's a new Amazon Accounts, you need to sign up for EC2, SDB, and S3.

More Info


  • The team – for the initial use case, the ongoing feedback and support, and the good times!

    • Adam Bognar

    • Andrew Simpson

    • Caleb Buxton

    • Colin Brumelle


  • Delano Mandelbaum (

  • aws_sdb code by Tim Dysinger (

  • Escape, Copyright (C) 2006,2007 Tanaka Akira <>

  • Keshia Knight Pulliam (


See: LICENSE.txt

Jump to Line
Something went wrong with that request. Please try again.