Configuration Management (CM) Tools e.g. Ansible, Puppet, Chef — What are they?
Configuration management (CM) is the process of Design and managing changes in the infrastructure in a repeatable manner by virtue of Automation. so that all the systems maintain the integrity and are hence predictably alike. Server Configuration Management is the complete term used for this feature.
There are three primary automation tools used in the industry today — Ansible, Puppet, and Chef. Each tool has its own set of pros and cons, and choosing the right one for your organization can be difficult.
Automation of infrastructure also called — Infrastructure as code (#InfrastructureAsCode)- makes provisioning of newer infra so much more quicker & the entire process more efficient as it allows for all the tedious and boilerplate tasks to be performed faster and more precisely compared to a manual effort by an Infrastructure engineer.
Why bother using Configuration Management (CM) Tooling?
- Quick Infrastructure Provisioning: Whenever there is a need to launch a new infrastructure component, automation using a CM tool will be able to complete the provisioning in the shortest amount of time, in a predictable and tested format.
- Recovery from Critical Events: In case of a critical event, for e.g. a hack on the servers (or) failure of an infrastructure etc, a duplicate environment with similar configuration can be quickly brought back to life, when it might take hours to troubleshoot and fix the original issue.
- Complete Auditability — The evolution of infrastructure over time may cause serious issues of understanding root cause of the problem and will be difficult to troubleshoot. CM tooling provides this auditability.
- Version Controlling Infrastructure Changes: Version controlling of provisioning scripts provide the ability to version control the environment launch and workflows associated with it. Version control tools e.g. Git, can be used to keep track of changes.
- In-Sync Environments — Automation using Provisioning scripts ensure that all the different environments for the same software / ecosystem with production, development, and testing servers — are in sync with each other and hence ensuring predictability
Any negatives of CM Approach?
The use of configuration management / Infrastructure Automation / Infrastructure as Code approach — typically requires more initial planning and effort than manual system administration.
This appears to slow down infrastructure configuration, as any code — just like in any other scenario — has to undergo the SDLC — which includes design, development and testing, before production’izing the solution.
Overview of a typical CM tool Features
Most configuration management tools use a controller-master (or) a node-agent model. This is to say that — the controller manages the configuration of the nodes primarily driven by the provisioning scripts.
The most common features are -
- Templates: Most CM tools provide the facility to templatize provisioning, achieved tyically by setting up configuration files and services.This ensures maximum resuse, reduced time to develop by leveraging proven and tested models & reducing cost.
- Automation Framework: Every CM tool uses a “Programming language” for its provisioning scripts, which have a set of features that can be used for provisioning infrastructure. These Programming languages are typically based on other conventional languages, possibly in a simpler way.
- Idempotency — This is a key feature that is necessary to ensure that a re-run of the scripts, will not have to repeat the steps that are already completed. for e.g. if a package was already installed, the tool will not try to install it again.
- System Configuration Management — Configuration Management Tools typically offer detailed information about the infrastructure component being provisioned. which could be — network interfaces, IP addresses, operating systems, packages, modules, distributions etc. These are named typically as facts.
Choosing a Configuration Management Tool
There are multiple CM tools available , each one with a different set of features & complexity levels. Popular choices include Chef, Ansible, and Puppet. The first challenge is to choose a tool that is a good fit for your needs.
- CM Tool Product Complexity: Most CM tools mandate a minimum hierarchy, typically consisting of a controller or master node — which holds the core configurations and multiple child nodes, which are to be monitored / managed. Puppet, for example, requires an agent application to be installed on each node, along wtih a master node to be installed on the controller machine. Ansible, on the other hand, has a decentralized structure that doesn’t require the installation of additional software on the nodes but relies on SSH to execute the provisioning tasks.
- Learning Curve : Another key parameter leading to the choice of CM tools is the steepness of the learning curve for the Scripting language aka. Specific Language (DSL), along with a set of features that comprise their framework for automation.
- Cost: Typically cost is not the most major parameters as in case of most other enterprise tooling. Most CM tools offer free or open-source variants, with paid subscriptions for advanced features and services. Some tools will have more limitations than others, so depending on your specific needs, the user can opt in for paid services.
Read about each of Ansible, Puppet and chef in one of our blogs.
Author: Dilish Kuruppath / BridgeApps Ltd, London, UK
Originally published at https://bridgeapps.substack.com on February 27, 2022.