Tim Dysinger RSS

Jul
23rd
Wed
permalink

Speaking at RailsConf EU 2008 on Puppet

See you in Berlin this September. I am speaking on using Puppet to automate whole clusters of Linux servers in a DRY fashion. Here is the abstract: Title: Using Puppet to DRY up your Rails Servers Description: Puppet is a system administration tool written in Ruby with a DSL for describing system resources. We can directly leverage it to effortlessly DRY up the management of our rack of servers. We will go through puppet's installation, features and a demo where we watch brand new servers automatically configure themselves as a complete multi-machine Rails stack, ready for Capistrano deployment. Abstract: Puppet is a tool written in Ruby for system management. It has been reported that Google uses Puppet to manage 6000+ OS X desktop machines. However, it is most commonly used to manage a rack of servers. Puppet has a DSL with a Ruby-like syntax for describing system resources and actions to configure and keep servers up to date. It is the perfect companion to Capistrano. Capistrano is good at deploying versioned applications to a remote rack of servers. Puppet is good at configuring those servers so that they are up to date, secure and running the right services.

We often find ourselves talking, at RailsConf, about the issues involved with developing a Rails app and deploying with Capistrano. However most non-trivial Rails apps require multiple servers and clusters of rails apps fronted by a proxy webserver. Ask yourself: "How exactly did I get to the point where I _could_ just 'cap deploy'?" Most likely you are deploying to either a hosted machine or you hand configured a group of servers on your own. If you are in the later category then you know how much time it takes to keep a rack of servers in shape.

Puppet is cross platform. With it we can manage Gentoo machines in the same abstract DSL as we would manage Solaris machines. For example, we could use Puppet to describe that on all webserver machines we need NGINX installed and running with a specific nginx.conf file, even if our webservers are a mix of Solaris and Debian. We can use Puppet to insure that our system administrator user and our rails deployment user are on all machines with the proper ssh keys. We can use it to make sure each of our machines has the right cron jobs lined up. We can use it to insure that each machine has exactly RMagick vX.XX.X installed. The list is endless. If you can do it on the command line, it can be written in Puppet's DSL and you will never have to repeat yourself again. Join us for an in-depth tour of Puppet. We will see a demonstration on brand new empty EC2 linux instances. This demo will show a rack of servers boot up and configure themselves from scratch and join a cluster of rails servers, ready to serve your Rails application.