Puppet is a free software written in Ruby and is designed to manage configuration and automate tasks. Puppet uses a declarative Ruby-like Domain-Specific Language (DSL) in its command-line environment and works on major Linux, Unix and Windows systems.
The two solutions for which Puppet is used for are configuration management and data centre automation. In configuration management Puppet can be used to monitor and change the configuration on a wide network, which can be refreshed every 30 minutes. It can also revert the configuration, if any changes are found. In data centre automation Puppet can be used for automating deployment and any other operations, where same steps are required to be followed repeatedly. This helps in saving productive time, as manually configuring and repeating the same steps every time are time consuming.
Puppet works in a master-agent model with a centrally controlling server called Puppet Master. The work stations and servers under the master puppet are called ‘nodes’ and the puppet master will manage all the nodes. The desired configuration defined on the puppet server is applied across all the nodes. Puppet can be utilised for an entire life span of a server, starting from automatic deployment, installation, setup of applications, updating software / configuration and in the end to remove the server.
Puppet comes in free open source and enterprise versions. The enterprise version comes with all the features needed to automatically deliver, update, monitor, and secure applications and global infrastructure.
Some of the features that are unavailable in free version but available in enterprise version are given below –
Reporting and compliance – The real time visualization of the nodes and the changes that take place are shown in real time with puppet server reports.
Configuration automation – Define a configuration and apply it continually on the nodes with web ui and for enterprise only platforms like AIX and F5. It also has guided out of the box installation with enterprise class integration.
Orchestration – Directly control and view changes for apps and global infrastructure. Command line interface and full and direct control with visual feedback and visibility.
Automated Provisioning – Automation of day one provisioning of your infrastructure and for virtual machines and upgradable capabilities for automation.
Code management – Automated workflows and managing of infrastructure code across environment. Out of the box workflows with command line interface and multi file sync are supported.
Node management – Can classify and manage the complete life cycle of nodes. It has rule based node classifier with web ui and supports inventory filtering.
Role based access control – Assigning custom permission to various teams, which supports token authentication. It can also be integrated with active directory and LDAP.
Enterprise support – Get 24/7 help with email and phone with professional service and virtual in person training.
The above mentioned features are available only on the enterprise version. However these features can be developed as Puppet is an open source software, which helps in developing custom features against specific requirements. But remember it would be time consuming to develop individual features. In the enterprise version, it has all the tools that are needed for automation almost at any level, which includes networking, middleware, operating system, application and so on. It is one of the best tools for managing a company’s infrastructure and systems.