
What is Puppet
Puppet is a configuration management tool. Puppet is Developed by Puppet Labs and is used to automate the management and configuration of infrastructure. It was developed in Ruby DSL (domain specific language) and used to deploy, configures and manages servers and also follows a client-server architecture, where one machine in any cluster acts as a server, called the master, and the other acts as a client, called the slave on the nodes. It can start any system from scratch, from initial setup to the end of the life of a particular machine.
Features
Idempotency
Firstly, it supports Idempotency which makes it different. Similarly, like Ansible, in Puppet it is safe to run the same set of configuration multiple times on the same machine and also in this thread, Puppet checks the current status of the target machine and only makes changes if there are any specific configuration changes.
Platform Support
It is compatible with all Ruby-enabled platforms such as Microsoft Windows, Linux, Mac OS, etc.
Documentation
It provides a huge number of well-designed detailed documentation. In other words, there are lot of documentation available on the internet for reference.
Reporting Compliance
The enterprise version supports graphical reports with which you can easily visualise the infrastructure, communicate and quickly respond to changes. It provides real-time visibility into the impact of changes so you can see what’s going on in your infrastructure.
Puppet Versions
It comes with two different versions:
- Open Source Version – This is the basic version of the Puppet configuration management tool. It comes under the Apache 2.0 system and you can download it from the official website. In addition this version is freely available.
- Enterprise Version – Commercial version that offers features such as compliance reporting, orchestration, role-based access control, GUI, API, and command line tools for efficient node management. However, you have to pay for this version.
Puppet Architecture

It uses a master-slave or client-server architecture like another configuration tool for instance ansible. SSL interconnects clients and servers. However, the client is called Puppet agent/node and the Server is called Puppet master.
To clarify let’s see the components of Puppet architecture:
Puppet Master
The Master handles the entire configuration process in the form of puppet codes. It is a Linux-based system with Puppet Master software installed. Master must be on Linux. It uses an agent to apply the configuration to nodes. This is where SSL certificates are checked and marked.
Puppet Slave or Agent
Its agents are real work systems used by the Client. It is installed on the client computer, maintained, and operated by a puppet master. They have a puppet agent service that works inside of them.
Most importantly agent machine can be configured on any operating system such as Windows, Linux, Solaris, or Mac OS.
Config Repository
The configuration repository is a storage area where all configurations related to servers and nodes are stored, and after that can retrieve these configurations when needed.
Facts
Facts are a key-value data pair. It contains information about a master node or machine. It represents the states of the client such as operating system, network interface, IP address, availability, and whether the client machine is virtual or not.
We can determine the current state of any agent using facts. Changes to any target machine are factual. We can predetermine and configure facts.
Catalog
Configuration and manifest files written in it are converted into the compiled format. This compiled format is known as a directory and we can then apply that directory to the target machine.
Conclusion
In conclusion, it is a very powerful configuration management tool. I hope after reading this article you will get a brief idea about what is puppet and how it works.