Puppet vs. Chef – The Battle Wages OnPuppet vs. ChefSo, Puppet or Chef? A question of configuration management that has started more thanone flame war in its time. Whilst perhaps not helpful for those charged with implementingan automation solution for their business the most appropriate answer really is “Itdepends.” Many have argued that (considering the alternative) using either is fine. Justget started!There are differences though, both with the technologies and the companies behindthem, that an understanding of may make your choice a little easier.
Complexity & PowerWhen looking into each tool some themes consistently arise. It is frequently stated thatPuppet is a tool that was built with sysadmins in mind. The learning curve is lessimposing due to Puppet being primarily model driven. Getting your head around jsondata structures in Puppet manifests is far less daunting to a sysadmin who has spenttheir life at the command line than ruby syntax is. Chef on the other hand is procedural,you write your recipes in ruby code. If you’re on the Dev side of DevOps, particularly ifyou already have ruby experience, this approach feels natural to you. If you’re asysadmin it can be more problematic. The steep learning curve of Chef is also viewed asa risk in larger companies. Skilling a large team up, and then maintaining those skillsover time, is seen as a additional risk.The flip side to this argued by Chef users is that, once you are over the initially steeplearning curve, you get a lot more power and flexibility out of Chef. Its reliance on codemeans you can bend configurations to your will much more easily. They would alsoargue that the model driven approach of Puppet, which determines installation based ondefined dependencies, suffers in practice due to the loss of control. When definingprocedurally there are no surprises.It should also be pointed out that Puppet now allow developers to work with pure ruby tobuild manifests (as of version 2.6).PlatformsWhilst both Chef and Puppet are cross platform Puppet is officially supported on abroader range of operating systems. For details check these links:Puppet Supported PlatformsChef Supported PlatformsCommunityAs a more mature product Puppet has a larger user base than Chef. Chef has also beenconsidered more US centric to date. Having said this Chef has been making huge gainsover the past couple of years. It can be argued again here that a sysadmin may getmore from the Puppet community and a developer from the Chef one.
DocumentationWhilst early on both Puppet and Chef had awful documentation they have both improvedsignificantly. Their respective online documentation repositories can be found here. Iactually prefer the Puppet docs but I’m still carrying scars from early attempts to makeuse of Chef’s offerings so I could be biased:http://docs.puppetlabs.com/http://docs.opscode.com/In terms of reference texts both Puppet and Chef have excellent options available:Pro PuppetPuppet 2.7 CookbookTest Driven Infrastructure with ChefChef – The definitive guide (Coming soon)PricingBoth Puppet and Chef offer free open source versions. Puppet Enterprise is free for thefirst 10 nodes and then $99 per node (per year) after that. Discounts kick in in tiers afterthat until you hit 2500 nodes.Private (behind the firewall) Chef ranges from $120 per month for 20 servers to $600 permonth for 100 servers. Chef also have a hosted (SaaS) offering which is priced thesame. Be prepared for pain with their UI though. It hasn’t won any user experienceawardsConclusionIf you have time to try both then do. It’s a bit of a case of horses for courses and youmay be surprised. If you’re a large shop with a diverse range of skills in operations anddevelopment you may lean towards Puppet. If you’re a Rails shop you’d probably gostraight to Chef. There really is no definitive answer though. As mentioned above, doingone is light years better than doing neither so if you’re agonizing over the decision juststop, toss a coin and get going today.