Review: Puppet vs. Chef vs. Ansible vs. Salt

The leading configuration management and orchestration tools take different paths to server automation

non management career paths
Thinkstock

The proliferation of virtualization coupled with the increasing power of industry-standard servers and the availability of cloud computing has led to a significant uptick in the number of servers that need to be managed within and without an organization. Where we once made do with racks of physical servers that we could access in the data center down the hall, we now have to manage many more servers that could be spread all over the globe.

This is where data center orchestration and configuration management tools come into play. In many cases, we're managing groups of identical servers, running identical applications and services. They're deployed on virtualization frameworks within the organization, or they're running as cloud or hosted instances in remote data centers. In some cases, we may be talking about large installations that exist only to support very large applications or large installations that support myriad smaller services. In either case, the ability to wave a wand and cause them all to bend to the will of the admin cannot be discounted. It's the only way to manage these large and growing infrastructures.

Puppet, Chef, Ansible, and Salt were all built with that very goal in mind: to make it much easier to configure and maintain dozens, hundreds, or even thousands of servers. That's not to say that smaller shops won't benefit from these tools, as automation and orchestration generally make life easier in an infrastructure of any size.

I looked at each of these four tools in depth, explored their design and function, and determined that, while some scored higher than others, there's a place for each to fit in, depending on the goals of the deployment. Here, I summarize my findings.

Puppet Enterprise

Puppet arguably enjoys the biggest mind share of the four. It's the most complete in terms of available actions, modules, and user interfaces. Puppet represents the whole picture of data center orchestration, encompassing just about every operating system and offering deep tools for the main OSes. Initial setup is relatively simple, requiring the installation of a master server and client agents on each system that is to be managed.

From there, the CLI (command-line interface) is straightforward, allowing module downloads and installation via the puppet command. Then, changes to the configuration files are required to tailor the module for the required task, and the clients that should receive the instructions will do so when they check in with the master or via a push that will trigger the modifications immediately.

There are also modules that can provision and configure cloud server instances and virtual server instances. All modules and configurations are built with a Puppet-specific language based on Ruby, or Ruby itself, and thus will require programmatic expertise in addition to system administration skills.

InfoWorld Scorecard
Scalability (20.0%)
Availability (20.0%)
Performance (10.0%)
Value (10.0%)
Management (20.0%)
Interoperability (20.0%)
Overall Score (100%)
AnsibleWorks Ansible 1.3 8.0 9.0 9.0 9.0 8.0 7.0 8.2
Enterprise Chef 11.4 9.0 9.0 8.0 9.0 7.0 8.0 8.3
Puppet Enterprise 3.0 9.0 9.0 9.0 9.0 9.0 9.0 9.0
SaltStack Enterprise 0.17.0 9.0 9.0 9.0 9.0 9.0 8.0 8.8
1 2 3 4 Page 1
Page 1 of 4