What is Puppet and Its Architecture

Reading Time: 3 minutes

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.

Written by 

Shubham Gupta is a DevOps Consultant at knoldus. He is practising Devops - Docker, Jenkins, Ansible, Kubernetes. He is passionate about DevOps technology and cloud computing.

Discover more from Knoldus Blogs

Subscribe now to keep reading and get access to the full archive.

Continue reading