Puppet is a model-driven configuration management system. You declare the state a system should be in using Puppet's own declarative language, and the Puppet Server compiles that declaration — together with facts reported by the node — into a catalogue: a directed graph of resources with dependency edges resolved. The agent then enforces that catalogue locally and reports what it changed. The compilation step is the defining characteristic. Puppet decides what a node should look like before touching it, which is why relationships, ordering and duplicate-resource conflicts are caught at compile time rather than halfway through a run.
The language is genuinely declarative rather than a scripting language with declarative decoration. Resources have types, titles and attributes; classes group them; defined resource types let you instantiate a pattern many times; and the roles-and-profiles pattern gives a codebase a shape that survives growth. Data lives outside the code in Hiera, layered by environment, node group or fact, so the same module serves every environment without conditionals scattered through the manifests.
Around the core sits the rest of the platform. Facter gathers node facts, including custom and external facts. The Puppet Development Kit scaffolds, validates and packages modules, with puppet-lint, rspec-puppet and Rubocop wired in. Puppet Enterprise adds the console, role-based access control, node classification, patch management, disaster recovery, and Bolt for imperative tasks and plans — the agentless orchestration layer for the work that does not belong in a catalogue at all.
Why this skill matters now
Puppet occupies the part of the market where enforcement matters more than convenience. An agent that checks in on a schedule and corrects drift is a different operational proposition to a push tool someone has to remember to run, and in audited environments that difference is the whole argument. Estates with tens of thousands of nodes, strict change control and a real compliance obligation are where Puppet stays.
That shapes the hiring. Organisations are not looking for people who can write a manifest; they are looking for engineers who can take an inherited codebase with node definitions accreted over a decade and restructure it into roles and profiles with Hiera-separated data, without breaking the estate mid-migration. Certificate lifecycle, environment isolation, catalogue debugging and Puppet Server tuning are all specialist skills that a general DevOps background does not supply.
The second driver is orchestration. Bolt gave Puppet teams an agentless path for tasks and plans — patching, restarts, one-off remediation — which removes the historic reason to bring in a second tool. Knowing where the catalogue ends and a Bolt plan begins is now part of the job.