Puppet
02 / 02

Server Architecture, Roles & Profiles, and Bolt

Server Architecture, Roles & Profiles, and Bolt

Catalog Compilation

Puppet Server evaluates a node's assigned manifests/classes plus its facts, compiling a node-specific "catalog" — a complete desired-state description — sent to and applied by Puppet Agent on that node. Same manifests, different catalogs per node based on facts.

Node Definitions

# site.pp
node 'web01.example.com' {
  include nginx
  include firewall
}

node default {
  include base
}

Roles and Profiles Pattern

Profiles combine lower-level component modules into one cohesive concern (a "web_server" profile = nginx + firewall + monitoring). Roles combine one or more profiles into what a node type actually needs. Node definitions stay simple and technology-agnostic; profiles/modules handle implementation details — the most widely-adopted convention for keeping large Puppet codebases maintainable.

Dry Runs

puppet agent --test --noop
# shows what WOULD change without actually applying it —
# similar in spirit to `terraform plan`

Puppet Bolt — Agentless Tasks

bolt command run 'systemctl restart nginx' --targets web01.example.com
bolt apply nginx.pp --targets web01.example.com
# runs over SSH/WinRM with no persistent agent installed —
# closer in architecture to Ansible than to Puppet's traditional model

Open Source vs. Puppet Enterprise

Puppet Enterprise is a paid product built on the open-source core, adding a web console, RBAC, and orchestration/reporting — an open-core model common among infrastructure tooling vendors.

Keep your own version of these notes — editable, searchable, and organised by your stack.

Start free