Commercial Products
Aug '09
10

Rudy 0.9 Released

posted by delano

After 8 months of development, testing, writing, and rewriting, Rudy has reached version 0.9. This is an important release because it establishes a baseline for the upcoming 1.0. The configuration syntax, command-line interface, and Ruby APIs are now stable and will not change. The road to 1.0 will be paved with testing, bug fixes, and documentation.

Note: Rudy 0.9 is not compatible with previous releases. See Upgrading.

What is Rudy?

Rudy is a development and deployment tool for EC2. It helps you build and maintain infrastructures by organizing them into groups of zones, environments, and roles. By making it quick and easy to build infrastructures, Rudy makes it feasible to run environments only for the time that you need them. Get started now.

Who is it useful for?

Rudy is useful to anyone starting a project with Amazon EC2. It’s also useful for launching test environments on-the-fly. My beta customers have been using Rudy to build and maintain their stage and production environments. I even use Rudy to script my release process (I’ll publish my configuration in a future post).

There are many possibilities. You can find other examples in Rudy’s Arcade and in my EBS test.

Configuration

Rudy is configured via several simple domain specific languages. There’s a machines configuration which describes the “physical” properties of your infrastructure and a routines configuration for describing repeatable processes (similar to short scripts).

The following is an example configuration that creates a machine called m-us-east-1b-stage-app-01. This machine has a 100GB EBS volume mounted at /rudy/disk1 and one user named rudy.

   
 machines do
   env :stage do                   # Define an environment
     ami 'ami-e348af8a'            # Specify a machine image
   
     role :app do                  # Define a role
       disks do                    # Define EBS volumes
         path "/rudy/disk1" do  
           size 100
           device "/dev/sdr"
         end                       
       end
     end

   end 
 end
 
 routines do
 
   startup do                      # $ rudy startup
     adduser :rudy       
     authorize :rudy               # Enable passwordless login
                          
     disks do                   
       create "/rudy/disk1"        # Create and mount a volume 
     end                       
                         
     remote :rudy do               # Run remote commands via SSH
       mkdir :p, "great"           # $ mkdir -p great
       mysql_init :start 
       your_script 'arg1', 'arg2'  # Call your own scripts
     end                          
   end
 
 end

See the default Rudyfile for a complete configuration sample

Installation

$ sudo gem install rudy

See Getting Started for details.

More Information

Thanks

In addition to everyone that has used and is using Rudy, I’d like to thank (in no specific order):

  • Kalin Harvey for the encouragement and answering my random questions.
  • The Rilli team for the initial usecase and invaluable feedback: Adam Bognar, Andrew Simpson, Caleb Buxton, Colin Brumelle.
  • Sam Aaron for teaching me about Ruby and communicative programming.
  • Everyone at Utrecht.rb for the interest and encouragement.
  • Steve Abatangle for the bug fixes.
  • Mathias Monnerville for allowing me to register Rudy at Google Code.
  • Jamis Buck for Net::SSH
  • Glenn Rempe for amazon-ec2 (and the quick releases!)
  • And of course, Keshia Knight Pulliam.

What’s Next

There’s a lot of exciting stuff in store for Rudy and Solutious. Look forward to more announcements in the coming months.

I'm Delano Mandelbaum, the founder of Solutious Inc. I've worked for companies large and small and now I'm putting everything I've learned into building great tools. I recently launched a monitoring service called Stella.

You can also find me on:

-       Delano (@solutious.com)

Solutious is a software company based in Montréal. We build testing and development tools that are both powerful and pleasant to use. All of our software is on GitHub.

This is our blog about performance, development, and getting stuff done.

-       Solutious