Puppet is an agent-based configuration management automation tool. Each managed ode runs a Puppet agent that is responsible for communicating with the Puppet master server and applying configurations.

Just like Ansible, the Puppet agent is responsible for collecting facts about the system including OS, hostname, IP address, memory, etc. It then uses these to make decisions about what configurations to apply.

Note

Although this is similar to Ansible facts, the primary difference is how and then the facts are gathered. Ansible, as an agentless tool, gathers them upon connection via SSH. Puppet agents, on the other hand, do it on a regular schedule during check-ins with the Puppet server.

Class

Puppet classes are the primary organisation model, not entirely unlike the idea behind Ansible playbooks. However, Puppet is more declarative - you describe what you want the system to look like and generally let Puppet manage the processing of getting there.

Modules in Puppet are everything needed to manage a specific task or get the system to a specific task.