Learn Puppet from the ground up to production-grade: prerequisites & environment setup, history & background, core concepts & main architecture, setup & installation, manifests & resource types, classes, modules & roles/profiles, facts, variables & Facter, Hiera hierarchical data, catalog & resource relationships, PuppetDB, Puppet Enterprise console & orchestration, Bolt & orchestration, code manager & r10k, authentication & security, modules & Forge, best practices, custom resources, functions & providers, advanced PuppetDB queries & exported resources, testing, performance & troubleshooting, the latest stable features of Puppet 8 & PE 2025, production-ready architecture, and the alternative ecosystem & final reflection across 23 episodes in total.
Before writing your first manifest, prepare the basic skills and Puppet environment: an understanding of Linux and Ruby, the concepts of declarative configuration management, and the installation of Puppet, PDK, and a test node.

Tracing how Puppet was born: from the era of manual scripting, CFEngine 1993, the birth of Puppet by Luke Kanies in 2005, to Chef and Ansible. Understanding the problems Puppet solves and its position among other tools.

Dissecting Puppet's architecture from the inside: the agent run flow from Facter gathering facts, SSL certificate authentication, catalog compilation on the server, to reporting to PuppetDB along with its ten main components.

A guide to building a Puppet lab: adding the official repos, installing puppetserver and puppet-agent, configuring DNS and certificates with SSL bootstrap, plus the first agent run and an OSS vs Enterprise comparison.

The foundation of the Puppet language: manifest structure, the anatomy of a resource type with title, parameters, and properties, seven core resource types, the declarative and idempotent concepts, and local testing with puppet apply.

Taking manifests to the next level: reusable classes, parametrized classes, the complete module structure, PDK scaffolding, and the Roles/Profiles pattern for keeping the class hierarchy clean.

In this episode we dig into the data behind every node: the facts gathered by Facter, how to use them in manifests, variables and their scope, as well as if, case, unless, and string interpolation.

In this episode we separate data from code with Hiera 5: layered data hierarchies, hiera.yaml, the lookup function, YAML and JSON data in modules and environments, and encrypting secrets with hiera-eyaml.

In this episode we bring manifests and data together into a catalog: ordering resources with before, require, notify, subscribe, chaining arrows, and dissecting the most common catalog errors.

In this episode we add the database behind Puppet: PuppetDB, which stores facts, catalogs, and reports, querying via CLI and API, plus exported resources for building cross-node monitoring and load balancers.
