Change is an essential part of IT, but it's often disruptive. An adjustment to one asset can throw other resources out of alignment -- sometimes in ways no one anticipated. Those misconfigurations can result in poor performance, application inconsistencies or noncompliance.
To avoid those outcomes, configuration management delivers documentation, consistent maintenance and change controls. These capabilities help an organization not only identify its IT assets but also understand the relationships between those assets.
What are configuration management tools and what are they used for?
The automation built into configuration management tools enables sysadmins to create checks and redundancies that keep assets in a desired state. That higher level of automation improves overall efficiency and helps admins to offset problems that result from human error and manual server configurations. These benefits are amplified when an organization shifts to a DevOps workflow.
Effective configuration management, or CM, can boost productivity, reduce IT costs and help to ensure continuous delivery of IT services. A standard approach for successful management is through the deployment of CM agents installed on multiple servers that take commands from the master server. An administrator can send a configuration file to the master server to execute specific actions on multiple target hosts, whether on premises, in the cloud or in a hybrid environment.
Let's explore the top configuration management tools in DevOps, evaluate their features and consider key aspects that set them apart. All of these tools offer versions for Linux, Unix, Windows and macOS.
Ideal for small DevOps teams that need a fast, lightweight configuration management tool, Ansible offers a foundation for automation across organization-wide systems. Administrators can send individual shell commands to entire sets of services and flexibly organize their environments. In addition to accessing Ansible Galaxy for role frameworks and playbooks, sysadmins can deploy modules for diverse tasks, from dynamic AWS integrations and container orchestration to basic configuration files. Ansible users need to write large amounts of procedural code; familiarity with Python lessens this burden.
Chef, either on premises or hosted in the cloud, is a useful DevOps tool for achieving speed, scale and consistency. It requires IT to run a master server for storing infrastructure state and then deploy agent software for the configuration of multiple servers. An open source version of Chef offers a standalone configuration format titled Chef Solo. The integrated suite of Chef tools enables IT teams to manage configurations in the cloud, on premises or in hybrid environments. Chef incorporates recipes written in the open source Ruby programming language. The Chef Enterprise Automation Stack represents the commercial distribution and offers unified security, compliance, infrastructure and application automation with monitoring. Progress Software acquired Chef in 2020, and offers combinations of Chef components (Habitat, Infra, Automate) called Infrastructure Management and App Delivery.
A widely used and established open source configuration management tool, CFEngine incorporates Promise theory to implement configurations. It relies on voluntary cooperation from lightweight agents on the managed resources. CFEngine runs on the C language and, because of its small memory footprint, performs faster with fewer dependencies than most other tools. While the customization process can seem overwhelming, the tool's enthusiastic community offers support and guidance.
Consul offers a straightforward management product for configuration storage and access, and it provides HTTP and DNS APIs for service discovery. In addition to being easy to deploy and use, Consul is written in Go and available as a native binary, making it effective across large, distributed systems. Through dynamic service discovery, Consul provides health checking, key/value stores and support for maintenance of multiple data centers.
Puppet's model-driven system and reliance on the Ruby language help simplify its setup process and use. It offers the ability to automate tasks, from installing packages to automatically updating configurations. Puppet requires a master server for storing state information, offers easy-to-manipulate modules and relies on the push model for sending updates. The open source edition of Puppet is free, while Puppet Enterprise integrates well with major DevOps tools and is free for up to 10 nodes.
A derivative of CFEngine, Rudder offers a UI that may specifically appeal to configuration management novices. While its web front end is built with the Scala language, local agents are written in C. It implements the Desired State Configuration feature, which enables PowerShell scripts to specify the config parameters of Windows-based servers. This open source CM tool deploys light local agents and identifies node characteristics to further simplify system configurations.
Offering master or masterless configuration approaches, SaltStack provides fast, event-driven automation using ZeroMQ as a brokerless, asynchronous messaging library. It was created for high-speed data collection and offers integrations with the major cloud providers, supporting the infrastructure as code approach. SaltStack's features are designed for environments that rely on cloud computing, virtualization and containerization -- all key elements of the DevOps approach. VMware announced its acquisition of SaltStack in late 2020, and has integrated it with the vRealize Automation suite.
As a configuration management tool geared to provisioning, Terraform enables IT teams to codify APIs for easy editing, revising and versioning shared configurations. An organization that relies on containers and virtual machine images will find Terraform to be especially useful. The tool employs an immutable configuration approach to prevent drift and to keep servers synced at a desired state. For monitoring cloud-based configurations, Terraform relies on the cloud provider's APIs; admins can simply use API keys for authentication. A recently previewed utility more deeply connects Consul and Terraform.