Puppet or Chef: The configuration management dilemma
Puppet is model-driven, Ruby is procedural, and both are large, messy, open source ecosystems plagued with pitfallsFollow @peterwayner
For the last few years, the game plan around the office was simple. The CEO would say "faster" and the CTO would say "cloud." Everyone would nod and say, "Of course."
All good things come to an end. The word "cloud" used to bring a positive, happy vibe to the enterprise staff because it promised to lift so many chores from our shoulders. The problems were going to melt away after an application of magic cloud ointment dispensed with a tap of the cloud wand on a Web page.
[ Also on InfoWorld: Review: Puppet Enterprise 3.0 pulls more strings | From Amazon to Windows Azure, see how the elite 8 public clouds compare in InfoWorld Test Center's review. | For the latest news and happenings, subscribe to the Cloud Computing Report newsletter. ]
Alas, everyone is discovering the cloud has plenty of its own headaches to replace all of the old headaches it solves. The trouble is that we're now responsible for dozens, hundreds, perhaps even thousands of machines. The cloud made it easy for us to deploy them, but now we have to take care of them. It's like that old maxim about kittens and stray dogs: Feed them once and you'll take care of them forever.
In this case, the joy of deploying dozens, hundreds, and perhaps thousands of machines means that there will soon be dozens, hundreds, perhaps even thousands of patches to apply, security holes to fix, and updates to download. When we had only a few machines, this kind of maintenance took a few minutes. But multiplying those minutes by dozens, hundreds, or thousands produces chores measured in days, weeks, and months.
Thank goodness for automation. Over the years, smart sys admins looked at the ballooning task list and figured out a way to write scripts that would handle the repetitive tasks. They built their own junior robot sys admin to do the work for them.
The hard work has coalesced into two major factions called Puppet and Chef. There are a number of other notable projects with readable names like Ansible and unreadable names like Bcfg2, but Puppet and Chef seem to have gathered the most excitement for now.
Both are open source stacks of code designed to make it easy for you to reach out and touch the files in your vast empire of virtual machines. Both have open source marketplaces for you to swap plug-ins that extend the framework and handle your particular type of hardware or software. Both are pretty cool, and both are finding homes in the racks of data centers around the world. Both now have companies built around the open source core selling assistance.
|Language||Mainly Puppet's custom JSON-like language, although a Ruby option is available beginning in version 2.6||A subset of Ruby|
|License||Apache; earlier versions are GPL||Apache|
|Approach||You list dependencies and Puppet figures out how to order the install.||You write an install script in Ruby using all of the extra helper functions from Chef.|
|Basic version||$99 per node per year (annual term license) with the first 10 nodes free; discounts kick in for larger installations||$120 per month for 20 nodes or $300 per month for 50 nodes|
|Premium version||The Premium version of Puppet Enterprise is priced by the sales team.||$600 per month for 100 nodes|
|Deployment||Puppet Enterprise runs on your machine.||Private Chef runs on your machine; Hosted Chef (same price) runs in Opscode's cloud.|