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
Intro
Puppet Fundamentals
Puppet manages system configuration as desired state. You describe the outcome you want. Puppet compares that policy with a node and changes the node when its state differs.
The central unit is a resource. A resource can represent a package, file, service, user, scheduled job, or another manageable part of a system. Each resource has a type, a title, attributes, and a desired state.
package { 'nginx':
ensure => installed,
}
service { 'nginx':
ensure => running,
enable => true,
}
This code does not list every shell command required on every platform. The resource provider handles platform-specific work. Your policy stays focused on the result.
The catalog is the contract
A manifest is a Puppet language file with a .pp extension. Manifests can contain resources, classes, functions, and conditional logic for many nodes.
A catalog is different. It is the compiled, node-specific document that lists resources and their dependency relationships for one node. Conditional logic has already been resolved before the agent applies the catalog.
Continue the course
This section is part of the paid course.
See pricing to subscribe, or log in if you already have access.
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
