Some sentences and pics from the site :
Puppet is a declarative language for expressing system configuration, a client and server for distributing it, and a library for realizing the configuration.
Each client contacts the server periodically (every half hour, by default), gets its latest configuration, and makes sure it is in sync with that configuration. Once done, it can send a report back to the server indicating what, if anything, happened. This diagram shows the data flow in a regular Puppet implementation.
It sucks as a reverse Nagios system. Nagios server keeps from clients, the system configurations monitoring the current state. On the other hand Puppet send configurations to multiple clients. It seems interesting...