Ever thought about how System Admins manage to keep the hardware up-to-date and functioning?
System admins usually have to deal with repetitive tasks like managing operating systems, security, provisioning, configuring services and patching.
With an infrastructure running a few machines, it won’t be a problem to manually configure every device in the way a system admin or organization recommends. But when the number of machines that need management is enormous, it becomes hard to manage.
For example: say at a data center, conventional methods won’t suit, and system admins have to automate a large part of their repetitive tasks. But system admins can write scripts to do most of their functions, and it doesn’t become a centralized way of management and still requires a lot of work.
In this scenario comes various configuration management tools. One such tool that has been lurking in the computing automation world is Puppet from Puppet Labs.
What is configuration management?
To quote, it means maintaining computer systems and software in the desired state consistently.
How does Puppet Work?
Puppet works in a Client-Server model. The central node called Puppet Master gets used to configure all other nodes, called Puppet Agents. Each Puppet Agent collects information about itself, known as “Facts” and sends over to the Puppet Master. The Puppet Master compiles a document known as “Catalog,” which describes how that particular Puppet Agent should get it configured.
Puppet Agents downloads the Catalog from the master and compares it with the state described in the Catalog. If there is any mismatch, the Puppet Agent will make the necessary corrections at its end. It then reports the actions, if any, it has taken to the master. This process ensures that your infrastructure is working in the way a system admin has designed it.
Puppet Master (PM)
Puppet Master is the primary source of configuration information for Puppet. Master provides instruction for all the agents managed by it. In short, the PM should know the entire system configuration.
Puppet Agent (PA)
A Puppet Agent is an individual node that acts as slaves on Puppet infrastructure. It must have the necessary privileges to apply the configuration catalogs that it pulls from the Puppet Master. Once it makes changes, it reports back to the PM about what’s done.
Puppet uses a custom declarative language to describe system configuration.
Functions
- Puppet allows system admins to define the distinct configuration for every host they manage.
- Puppet can continuously monitor the state and keep them consistent.
- As it deploys software, it can be used as a deployment tool.
Now, coming to the fact that Puppet alone is not the configuration management tool available out there for System Admins, there are different tools like Ansible, Chef for automation, etc. No device has all the features in itself to have all the tasks of System Admins / Consultants done. Organizations may use different kinds of automation tools to have their jobs done.
Advantages
- Highly mature
- Works on all primary OS
- Installation and setup is simple
- Good support
Disadvantages
- Knowledge of Ruby may be needed for advanced tasks
- Newer people may find it difficult
When To Use Puppet
- When stability and maturity are of concern.
- Easier to find skilled people in it.
Note: This article is intended just for outlining what Puppet automation tool is and, is in no means, complete. Puppet can do much more.
– By Girish Kumar G.
DevOps Engineer