Puppet is a tool to assist with IT automation. It uses a declarative, model-based approach, helping you manage infrastructure throughout its lifecycle. Starting with provisioning and configuration through orchestration and into reporting. Puppet, enables you to automate repetitive tasks, quickly deploy critical applications, and proactively manage change.
Puppet is an open source configuration management project, managed by Puppet Labs who also provide the proprietary Puppet Enterprise, which is available free of charge for up to 10 nodes. You can take your pick between the open source project or the enterprise one.
Microsoft Open technologies, Inc. work alongside Puppet Labs and the related open source community in order to ensure Microsoft Azure users can leverage this excellent tool.
How Puppet Works
The Puppet Labs website describes the workings of puppet as follows:
- Define the desired state of the infrastructure's configuration using Puppet's declarative configuration language.
- Simulate configuration changes before enforcing them.
- Enforce the deployed desired state automatically, correcting any configuration drift.
- Report on the differences between actual and desired states and any changes made enforcing the desired state.
Define with Reusable Configuration Modules
One of the key advantages of having a related open source community is the creation and maintenance of over 2,000 pre-built, freely downloadable configuration modules. These modules define configurations of common infrastructure and can be reused across physical, virtual and cloud environments as well as across operating systems. By combining these configuration modules you can create complete application configuration stacks that are shared across all of your environments and applications. This ultimately leads to easier maintenance of all your systems. Take a look at the modules available in the Puppet Forge.
Enforce Desired State
Once a set of configuration modules have been deployed the Puppet Agent (which runs on each node of your infrastructure) will communicate regularly with a Puppet Master server to ensure that it is in compliance with the desired state. In practice this is a four stage process:
- The Agent sends Facts (data about its state) to the Puppet Master server.
- The Master server compiles and delivers, to the node, a Catalog (details about how the node should be configured)
- The Agent makes any changes necessary and returns a report to the Master
- Reports are made available via the Puppet Master API for integration into other IT systems