Learn PUPPET with Real Code Examples
Updated Nov 27, 2025
Explain
Puppet uses a declarative language (Puppet DSL) to describe the desired state of infrastructure.
Supports agent/master and agentless (Puppet Bolt) modes for managing nodes.
Ensures consistency across servers by automatically enforcing configurations.
Integrates with cloud providers, virtualization, and container platforms.
Widely used in enterprise IT and DevOps for automated provisioning and compliance.
Core Features
Resources, classes, and modules for defining state
Manifest files to describe desired system configurations
PuppetDB for storing and querying system state
Hiera for hierarchical configuration data
Facter for gathering system facts dynamically
Basic Concepts Overview
Resource - a unit of configuration
Class - groups of resources
Module - reusable configuration bundle
Manifest - file with Puppet code
Fact - system data collected by Facter
Project Structure
Manifests directory (`manifests/`) for `.pp` files
Modules directory (`modules/`) with classes and resources
Hiera configuration (`hiera.yaml`)
Puppetfile for module dependencies
PuppetDB and reports for state tracking
Building Workflow
Write manifests to define node configurations
Organize manifests into modules
Use Hiera for externalized configuration
Deploy manifests via Puppet Master or Bolt
Apply changes on nodes and verify enforcement
Difficulty Use Cases
Beginner: Configure a single server
Intermediate: Manage multi-node environment
Advanced: Build reusable modules and classes
Expert: Orchestrate large enterprise deployments
Architect: Integrate Puppet with CI/CD and compliance pipelines
Comparisons
Puppet vs Chef -> Declarative vs procedural DSL
Puppet vs Ansible -> Agent-based vs agentless
Puppet vs SaltStack -> Stronger DSL vs event-driven execution
Puppet vs Terraform -> Configuration management vs provisioning
Puppet vs CFEngine -> Modern modules and community vs older tool
Versioning Timeline
2005 - Puppet initial release
2008 - Puppet Enterprise launched
2011 - Facter integrated for dynamic facts
2015 - Puppet 4 introduces modern DSL and Hiera integration
2023 - Puppet 8 with enhanced Bolt and orchestration features
Glossary
Resource - element of system configuration
Class - group of resources
Module - reusable bundle of manifests
Manifest - file defining node configuration
Fact - data about node collected by Facter