When comparing Chef vs CFEngine, the Slant community recommends Chef for most people. In the question“What are the best configuration management tools?” Chef is ranked 5th while CFEngine is ranked 8th. The most important reason people chose Chef is:
Chef has a relatively large community. One of the reasons for it is the fact that it's a pretty old and mature tool. Chef, originally released in 2009, is a more mature product. Being popular and with a large and dedicated community means that Chef has lots and lots of resources and guides from third party sources out there for beginners to pick up. Not only that, there are also many plugins and configuration recipes made by the community.
Specs
Ranked in these QuestionsQuestion Ranking
Pros
Pro Large community
Chef has a relatively large community. One of the reasons for it is the fact that it's a pretty old and mature tool. Chef, originally released in 2009, is a more mature product. Being popular and with a large and dedicated community means that Chef has lots and lots of resources and guides from third party sources out there for beginners to pick up. Not only that, there are also many plugins and configuration recipes made by the community.
Pro Cross-platform
Chef is cross-platform. Offering support for the biggest platforms out there: Linux, Windows and *nix.
Pro Popular choice among large companies
Chef has an impressive list of companies using it's automation service. Among them is Facebook, Etsy, Ancestry.com, PharmMD and Yahoo.
Pro Strong version control capabilities
Chef is centered around Git for it's configuration and deployments. Because of this, Chef also has great version control capabilities through Git.
Pro Mature
Chef was released in 2009, which is relatively a long time ago for software. Since then it has been through several versions and many bug fixes and tests. All of this can make Chef more appealing to teams who are looking for stability and maturity, which are things that Chef brings on the table.
Pro Fast
The cfengine agent is written in C and has some of the fastest execution times around.
Pro Scaleable
The decentralized architecture and innate speed allow cfengine to easily scale to thousands of nodes.
Pro Secure
Very good security track record.
Pro Helpful community
Although the community is not as big as puppets its very friendly and helpful to get thing's fixed or to point you in the right direction.
Pro Works great on low power devices and appliances
Because CFEngine is written in C it's not only very fast and scaleable but it only uses a few MB of memory and it's easy on the CPU.
Cons
Con Ties you to Ruby
Chef is written in Ruby and its CLI uses a Ruby-based DSL. In order to fully use and customize it you need to use Ruby as Chef does not give users any other choice when it comes to languages to use to configure it.
Con Steep learning curve
Chef has a steeper learning curve than many of its competitors, making it a more difficult tool for the non-devs of a team (such as sysadmins) to work with. For some teams, the added cost of teaching Chef to the team may outweigh the benefits.
Con Lacking ready to use modules like puppet
Because there is no ECOsystem like the puppetforge to share code you have to figure things out for yourself, which is good if you want to learn things but bad when you need to get things done.
Con Steep learning curve
It takes time and lots of practice to learn. Documentation is a bit lacking and if there are no examples to look to, it's that much more difficult to work with.