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

 <span class="n">role</span> <span class="ss">:app</span> <span class="k">do</span>                  <span class="c1"># Define a role</span>
   <span class="n">disks</span> <span class="k">do</span>                    <span class="c1"># Define EBS volumes</span>
     <span class="n">path</span> <span class="s2">"/rudy/disk1"</span> <span class="k">do</span>  
       <span class="n">size</span> <span class="mi">100</span>
       <span class="n">device</span> <span class="s2">"/dev/sdr"</span>
     <span class="k">end</span>                       
   <span class="k">end</span>
 <span class="k">end</span>

end end

routines do

startup do # $ rudy startup adduser :rudy
authorize :rudy # Enable passwordless login

 <span class="n">disks</span> <span class="k">do</span>                   
   <span class="n">create</span> <span class="s2">"/rudy/disk1"</span>        <span class="c1"># Create and mount a volume </span>
 <span class="k">end</span>                       

 <span class="n">remote</span> <span class="ss">:rudy</span> <span class="k">do</span>               <span class="c1"># Run remote commands via SSH</span>
   <span class="n">mkdir</span> <span class="ss">:p</span><span class="p">,</span> <span class="s2">"great"</span>           <span class="c1"># $ mkdir -p great</span>
   <span class="n">mysql_init</span> <span class="ss">:start</span> 
   <span class="n">your_script</span> <span class="s1">'arg1'</span><span class="p">,</span> <span class="s1">'arg2'</span>  <span class="c1"># Call your own scripts</span>
 <span class="k">end</span>                          

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