
Originally published on 2015-11-27; fully revised and updated.
This guide turns the original Puppet training outline into a practical roadmap for DevOps engineers, system administrators, and platform teams. You will learn what each topic area covers, how a Puppet run works end to end, and which manifests, commands, and tooling concepts are most useful to practice first.
Course agenda and learning outcomes
The source post is primarily an agenda. Grouped into learning blocks, it covers fundamentals through operational tooling:
- Configuration management basics: why configuration management matters and how to access working files.
- Puppet infrastructure: agents, Puppet master/server concepts, orchestration context, and cross-platform operation.
- Run cycle internals: fact gathering, node matching, and catalog compilation.
- Puppet language primer: resources, types, simple manifests, and conditional logic using facts.
- Environment organization: node definitions, reusable modules, Forge usage, class parameters, and Hiera-driven data.
- Operational extensions: MCollective topics, reporting, and ecosystem tooling such as Librarian-Puppet and r10k.
Puppet architecture and run cycle
A core learning objective is understanding the agent-to-server run cycle and where data, code, and reports move during enforcement.
flowchart TD
A[Agent starts run] --> B[Collect facts]
B --> C[Send facts to Puppet server]
C --> D[Match node data]
D --> E[Compile catalog]
E --> F[Return catalog to agent]
F --> G[Enforce resources]
G --> H[Send run report]
H --> I[Review and orchestrate changes]
Core components to understand
- Agent: gathers system facts and applies the desired state.
- Puppet server (historically master): compiles catalogs from manifests, modules, and data.
- Modules: reusable units of Puppet code.
- Hiera: externalized data for class parameters and environment-specific values.
- Reporting and orchestration layer: visibility and controlled execution at scale.
Hands-on manifests and commands to practice
The agenda explicitly includes applying manifests, working with Puppet types, and using fact-based conditionals. The examples below align with those objectives.
| Command | Best for | Execution model |
|---|---|---|
| puppet apply | Local testing of a manifest | Runs directly on the node without an agent-server exchange |
| puppet agent -t | End-to-end policy enforcement | Agent contacts Puppet server, fetches catalog, and applies it |
package { 'nginx':
ensure => installed,
}
file { '/etc/nginx/conf.d/training.conf':
ensure => file,
content => "server { listen 80; root /var/www/html; }\\n",
require => Package['nginx'],
}
service { 'nginx':
ensure => running,
enable => true,
subscribe => File['/etc/nginx/conf.d/training.conf'],
}Code language: PHP (php)
if $facts['os']['family'] == 'RedHat' {
$web_pkg = 'httpd'
} elsif $facts['os']['family'] == 'Debian' {
$web_pkg = 'apache2'
} else {
fail('Unsupported OS family for this lab')
}
package { $web_pkg:
ensure => installed,
}Code language: PHP (php)
sudo puppet apply site.pp --noop
sudo puppet apply site.pp
sudo puppet agent -t
sudo puppet facts show os
sudo puppet resource service nginxCode language: CSS (css)
---
profile::web::package_name: "nginx"
profile::web::service_name: "nginx"Code language: PHP (php)
Advanced tooling topics from the agenda
The original outline also references dependency management, environment deployment, and external classification/reporting concepts.
| Tool | Best for | Notes for modern teams |
|---|---|---|
| Librarian-Puppet | Managing Puppet module dependencies | Common in older workflows; still seen in legacy estates. |
| r10k | Deploying environments and modules from a control repository | Useful for branch-based environment promotion. |
| Puppet Dashboard / ENC concepts | External node classification and reporting | Concept remains important even when tooling choices differ. |
| MCollective | Live fleet interaction and orchestration-style operations | Frequently encountered in legacy training material and older deployments. |
Registration links and preserved source resources
Original registration links from the source page: legacy registration page and Google Form registration.
The original page also contained a YouTube gallery element that currently reports an API key restriction error; the referenced setup tutorial is preserved here: YouTube API key setup video.
Common pitfalls
- Learning syntax without understanding the run cycle (facts, compilation, and enforcement).
- Hardcoding environment values in manifests instead of separating data in Hiera.
- Skipping safe validation runs such as –noop before applying changes.
- Using community modules without checking dependencies, parameters, and platform fit.
- Treating legacy tools as mandatory instead of validating current standards in your Puppet platform.
I’m Rajesh Kumar, a DevOps, SRE, DevSecOps, Cloud, and Platform Engineering expert passionate about sharing practical knowledge, real-world experiences, and industry best practices. I have worked at Cotocus and regularly write about technology, travel, investing, health, product reviews, and digital marketing through my various platforms.
I publish technical articles at DevOps School, travel stories at Holiday Landmark, stock market insights at Stocks Mantra, health and fitness guidance at My Medic Plus, product reviews at TrueReviewNow, and SEO and digital marketing strategies at Wizbrand.
Find Trusted Cardiac Hospitals
Compare heart hospitals by city and services — all in one place.
Explore Hospitals
