Application deployment requires sophisticated virtual servers which will maintain one state. To do that, servers require a configuration management tool. Managing the deployment of any application (i.e. updating your application) across servers is also a part of the config management process. Deployment automation is a process to deploy your application on all of the infrastructure in a single go. This mission of deployment automation typically falls under DevOps.
Currently, the leading tools in the Configuration Management marketplace are Puppet, Chef, and Ansible. While there’s no specific leader in the marketplace, each tool has its advantages and disadvantages. As a point of dedicated users, Chef has Facebook, Nordstrom, & Target, while Puppet is used by Walmart, 1-800 Flowers, & Wells Fargo. Ansible is used by Capital One, Splunk, and NEC.
Selecting the best configuration management tool is a difficult task, regardless of whether you run servers on a single platform like AWS, GCE or across multiple vendors.
Let’s compare these three leading Config. Management tools.
Introduction of Tools
Puppet started out as a DevOps tool but has become popular as a configuration management tool as well. It’s written in Ruby and available in both free open source and paid enterprise versions. While Chef has a number of different features that are available for free, Puppet’s main features are in its paid enterprise version. Companies that don’t need a whole lot of features, can probably survive with the open source version, especially if they have someone with strong Ruby programming skills.
Chef is available as a free open source product and a paid enterprise subscription. It’s also written in Ruby, and those who know this programming language can easily customize Chef to their needs. It has more than 800 different modules that can be used for free. Installation is quick and easy, and it includes a number of features, such as text-based search and support for multiple environments. Its command line interface, a testing mode, and large database make it ideal for companies that need to store records for a large number of computers, or that have some unique needs. The capability to install or even create different modules makes this, one of the most customizable configuration management options.
Ansible uses Secure Shell (SSH) to provide a simple management tool with very strong security. It offers a number of other services besides configuration management, such as workflow monitoring, automating app deployment for updates, and more. It’s an open source program too, so it’s a good choice for new and small businesses that don’t have a huge budget. It’s also useful for those who need a configuration management tool but don’t have time to learn how to use some of the more complicated programs. A paid version with more features is also available.
Installation & Ease of Use
With Puppet, you set up a master server and install Puppet agents on each of your nodes (individual VMs). On initial setup of the master server, you have the option to install the Puppet console (Enterprise) and the master server on the same machine. Puppet does have Puppet Forge Community which offers great administrative templates, modules, and discussions.
To set up Chef, you’ll use Knife – Chef’s command-line tool that provides an interface between a workstation on your development machines and your Chef servers. You create cookbooks (instructions for automation), define environments, set roles and more, that are all pushed to a central Chef Server. Chef Server contains information on every node in your system. Chef Client runs independently on each of these nodes. To add nodes, you can do so via knife bootstrap, passing in an IP address and password.
Ansible, on the other hand, is designed to be light and fast, so there’s no installation on each node. Instead, nodes are added via a config file on your master server, with SSH authorized keys added to each node. Ansible offers a variety of consulting and training services.
Open Source Puppet only has a CLI, while Puppet Enterprise provides the CLI and a web UI.(reframe) Chef has a web UI, Chef Manage, but you’ll be doing most of your work via the command line with Knife. Last, there’s Ansible Tower, Ansible’s enterprise edition and its web UI. Open source Ansible does not have any web UI.
This is the main part of any configuration Management tool which matters in the end – when you are scaling systems to thousands and tens of thousands of nodes.
Ansible has powerful orchestration capabilities. As long as you have SSH authorized keys for each node, you can add as many as you’d like directly from the config file on the master server.
Chef Nodes are bootstrapped by the Chef Workstation and managed by Chef Agents. Adding new nodes is done through your workstation machine, which adds them to a master list on the Chef master Server. To add a new node in Chef just Bootstrap from Chef Workstation it automatically installs chef-client on the new node. Chef gets updates from each server node every 30 minutes and logs the status of the server for compliance requirements.
Similar to Ansible, it’s fairly easy to add and remove server nodes to Puppet. The Puppet Master Server component can quickly pick up on new server Puppet Agents to distribute commands for updates and configuration.
The following table shows Comparison between Puppet, Chef and Ansible:
They are designed to reduce the complexity of configuring distributed infrastructure resources, enabling speed, and ensuring reliability and compliance. It’s very important to evaluate multiple open source solutions before investing in an enterprise license. All configuration management tools have some pros and cons. Chef and Puppet are more established options for larger enterprises and environments that value maturity and stability over simplicity. Ansible is good options for those looking for fast and simple solutions. So which configuration management or deployment automation tool you use will totally depend on your needs and preferences for your environment.