Configuration management is the process of tracking and controlling the changes in a software with respect to its requirement, design, function, and development of a product. There are two types of configuration management approaches.
Pull Model: The nodes are dynamically updated with the configurations that are present in the server.
Push Model: Centralized server pushes the configurations on the nodes.
Puppet, Chef, and Ansible are three different tools that represent different paths to achieve a common goal of managing a large-scale server infrastructure efficiently with minimal input from the developers and system administrators. All three configuration management tools are designed to reduce the complexity of configuring distributed-infrastructure resources, enabling speed, and ensuring reliability and compliance.
Puppet:Puppet is a software configuration management tool that is mainly used by system administrators and cloud administrators. It helps an administrator to declare the system configuration and apply it across one or many systems at a time. Puppet is an open-source configuration management solution, which is built with Ruby and offers custom Domain Specific Language (DSL) and Embedded Ruby (ERB) templates to create custom Puppet language files, offering a declarative-paradigm programming approach.
Puppet server can run on any Ruby-installed platform, such as Microsoft Windows Server, CentOS, Linux, or Oracle Enterprise.
Puppet Components:
1. Puppet Master: Puppet Master is a mechanism that handles all configuration-related activities and helps in configuring nodes using a Puppet Agent.
2. Puppet Agents: Working machines that are managed by the Puppet Master are known as Puppet Agents.
3. Configuration Repository: This repository saves and pulls all nodes and server-related configurations, when required.
4. Facts: Facts are the details related to the node or the master machine that are used for analysing the status of any node. Changes are done on any target machine based on the facts. Puppet has pre-defined and custom facts.
5. Catalog:All manifest files or configurations, which are written in Puppet, are first converted into a compiled format called catalog. Later, these catalogs are applied on the target machine.
Chef: Chef is a configuration management technology, developed on the basis of Ruby DSL language and is used to automate the infrastructure provisioning. It is a flexible cloud infrastructure automation framework that allows the users to install the apps to bare metal VMs and cloud containers. A user can manage the infrastructure through the code rather than using a manual process. Chef supports multiple platforms, like AIX, RHEL/CentOS, Solaris, Ubuntu, and all Linux flavors. It is a Ruby based configuration tool that uses cook books to apply configuration.
Chef Infra Client uses Ruby as its reference language for creating cookbooks and defining recipes, with an extended DSL for specific resources. Chef Infra Client provides a reasonable set of resources, enough to support many of the most common infrastructure automation scenarios; however, this DSL can also be extended when additional resources and capabilities are required. Chef is a cloud infrastructure framework. It is a tool that allows us to manage configurations, similar to Puppet and a few other tools, but Chef is is written in Ruby. Chef can help you manage your infrastructure dependencies, create folder structure (with ‘knife’) and bootstrap our entire system or update configurations with just a few commands.
Ansible: Ansible is a simple open-source IT engine which automates application deployment, intra-service orchestration, cloud provisioning, and many other attributes. It is relatively easy to deploy an Ansible since it does not use any agents or custom security infrastructure. Compared with Puppet and Chef, Ansible was developed to simplify complex orchestration and configuration management tasks. Ansible platform is written in Python and it allows the users to script commands in YAML.
SaltStack: It is an open-source platform based on Python, and it is used for managing and configuring cloud infrastructure developed to create a better tool for collecting and executing data at high speeds
Action | Ansible | Puppet | Chef |
Term for that lists actions | Playbook | Manifest | Recipe, Runlist |
Protocol to network device | SSH, NetConf | HTTP(Rest) | HTTP(Rest) |
Uses agent or agentless model | Agentless | Agent | Agent |