Puppet Fundamentals
Puppet is a configuration management system that describes how machines should be configured. It compiles that policy into a catalog for each node, then corrects packages, files, services, and other resources that differ from the catalog.
itInfrastructure and operations | OpenSkills.info
Course pathWalk it in order
Look it upDip in anytime
Go furtherLeaves this page
Don't Panic
Don't Panic: Puppet Fundamentals
Puppet manages configuration with a healthy dislike of remembering every command somebody typed last Tuesday. It records the state a machine should have: a package installed, a file present, a service enabled and running. The agent checks later and changes what differs. This replaces a setup-command pile with policy that can notice drift after the setup party has gone home.
The important object is the resource, one manageable thing with a type, title, attributes, and desired values. Resources are not an unstructured shopping list. Their relationships form a catalog, a node-specific graph that says what must exist and what must happen first. A package can precede its configuration file, which can notify a service to restart. The graph is why Puppet can skip a dependent resource after a prerequisite fails while unrelated work continues.
A manifest is source code. The catalog is its result after Puppet combines modules, classification, facts, and Hiera data for one node. This saves many confused afternoons: two nodes can use the same module and still receive different catalogs because their facts or data differ. puppet apply uses the same model locally. In an agent-server deployment, a server compiles and delivers the catalog.
The recurring loop has a formal name, convergence, but its behavior is reassuringly dull. Run unchanged policy twice and the second run should make no unnecessary changes. That is idempotency. If something keeps changing, the machine and policy are having an argument that needs investigation, not a ceremonial restart.
Read Intro for the catalog and agent flow. Use Slides for the graph and safe change path. Keep Cheatsheet nearby for resource types, relationships, facts, and lookup commands. The Practice reference turns the theory into a local catalog that manages temporary files. The Quiz checks whether the graph and loop have landed in the correct compartments. They are stubborn concepts, but useful stubborn concepts.
Where this skill leads
Relevant careers
See how this topic contributes to broader role-level skill maps.
Sources
- https://help.puppet.com/core/current/Content/PuppetCore/intro_puppet_language_and_code.htm
Supports
- Catalogs as node-specific compiled desired state
- Manifests, resources, classes, modules, and classification
- Agent-server compilation and local puppet apply behavior
- https://help.puppet.com/core/current/Content/PuppetCore/subsystem_catalog_compilation.htm
Supports
- Agent identity, certificate, facts, and environment inputs
- External data, classification, manifests, modules, and catalog compilation
- No-op simulation and PuppetDB query role
- https://help.puppet.com/core/current/Content/PuppetCore/lang_resources.htm
Supports
- Resource declarations, types, titles, uniqueness, and providers
- Built-in and user-defined resource types
- Default ordering and explicit relationships
- https://help.puppet.com/core/current/Content/PuppetCore/lang_relationships.htm
Supports
- before, require, notify, and subscribe semantics
- Refresh events, failed dependencies, and dependency cycles
- Relationship metaparameters and chaining arrows
- https://help.puppet.com/core/current/Content/PuppetCore/facter.htm
Supports
- Facter as cross-platform system profiling
- Facts as node information available in manifests
- Core, custom, and external facts
- https://help.puppet.com/core/current/Content/PuppetCore/using_puppet_lookup.htm
Supports
- Command-line Hiera lookup
- Node, environment, facts, and explain options
- https://help.puppet.com/core/current/Content/PuppetCore/modules_writing.htm
Supports
- Standard module structure
- PDK support for authoring, validation, and testing
- https://help.puppet.com/core/current/Content/PuppetCore/Markdown/exec.htm
Supports
- Idempotency requirements for external commands
- onlyif, unless, creates, and refreshonly controls
- https://help.puppet.com/core/current/Content/PuppetCore/install_puppet.htm
Supports
- Puppet Server, agent, and optional PuppetDB platform components
- Server and agent deployment scope
- https://help.puppet.com/core/current/Content/PuppetCore/platform_lifecycle.htm
Supports
- Need to use maintained compatible Puppet platform versions
- Current Puppet, Puppet Server, and PuppetDB release mapping
- https://github.com/awesome-puppet-org/awesome-puppet
Supports
- Selection and descriptions of OpenVox, Puppet VS Code Extension, Puppet Cookbook, PuppetModule.info, and Vox Pupuli
- https://www.puppet.com/pricing
Supports
- Puppet Core and Puppet Enterprise editions
- https://voxpupuli.org/docs/collective/openvox/
Supports
- OpenVox community distribution
- https://www.redhat.com/en/technologies/management/ansible
Supports
- Ansible Automation Platform
- https://www.chef.io/products/chef-infra
Supports
- Chef Infra product
- https://saltproject.io/
Supports
- Salt Project state management
- https://cfengine.com/product-overview/
Supports
- CFEngine Enterprise product
- https://www.puppet.com/releases
Supports
- Puppet Enterprise release archive
- https://github.com/puppetlabs/puppet/releases/tag/3.0.0
Supports
- Puppet 3 release
- https://github.com/puppetlabs/puppet/releases/tag/4.0.0
Supports
- Puppet 4 release
- https://github.com/puppetlabs/puppet/releases/tag/5.0.0
Supports
- Puppet 5 release
- https://www.puppet.com/docs/puppet/6/release_notes_puppet.html
Supports
- Puppet 6 release notes
- https://help.puppet.com/core/8.13/Content/PuppetCore/FacterReleaseNotes/release_notes_facter.htm
Supports
- Puppet 7 and Facter 4 release
- https://help.puppet.com/core/current/Content/PuppetCore/PuppetReleaseNotes/release_notes_puppet_x-8-0-0.htm
Supports
- Puppet 8 release notes
