RubyConf 2008: A Puppet Story: Systems Building Systems
After years of automating systems with CFEngine, Luke Kanies, Puppet's primary author, had ideas about automation that he could not express with existing tools. He tried to fork CFEngine, but threw up his hands at the C code. As a sysadmin, his obvious next step was to try it with Perl. More frustration... Python was getting a lot of attention, but after investing tens of hours, Luke still couldn't express the basic system. Enter Ruby, Luke went from never seeing the language to a functional prototype in 4 hours! And Puppet was born... (thank you Matz!!!)
Now Puppet is available in most Linux distributions and supported on Solaris and OS X, with installations provisioning and managing 1000s of hosts in places like Google, Twitter and EC2. The Puppet project provides 3 things 1) a declarative DSL for expressing the configuration of a system 2) a client/server/certificate authority system that handles authentication, authorization and transport using SSL for communicating the configuration from the centralized repository to managed hosts and 3) a resource abstraction layer to provide portability across platforms, where resources are files, users, groups, packages, services, cron, etc... All Ruby!
This talk will begin with a bit of background on system automation, followed by Puppet's basic philosophical underpinnings, and how those are manifested in Ruby. This will highlight what Puppet is currently used to do in production environments at scale, while comparing and contrasting Puppet with tools like Capistrano. The talk will finish with the present state of the project, discuss some of the code and process challenges illuminated along the way and conclude with what is on Puppet's horizon.
About Andrew Clay Shafer
Andrew Shafer works full time on the Ruby open source system management framework, Puppet. He brings with him a background in computational science, embedded Linux development, web frameworks and Agile methods. Andrew spent the last few years working for venture funded experiments in the Salt Lake Valley using primarily C/C++, Java and more pl/sql than he'd care to admit... *shudder*
A recent convert to Ruby, Andrew appreciates Ruby, both for being a joy to program and for awakening an interest in higher order/functional languages. He joined Reductive Labs, the people behind Puppet, full time in April 2008. (http://reductivelabs.com)
His two sons think he is pretty cool.