I am using Puppet open source edition.
I found there are several components in Puppet 3.7.5:
But I don't know how they cooperate with each other. I have seen a simple architecture which only includes the puppet-master and puppet-agent.
As for other components, I don't know how they are cooperated. Can anyone give me a detail information about how they cooperate or any data flow graph?
Full disclosure I work at PuppetLabs!
A basic breakdown of the pieces:
The Puppet agent on each node sends facts about the node's configuration — detailing the hardware, operating system, package versions and other information — to the Puppet master. Basically this will kick off a Puppet run every n
minutes (30 by default), then report the changes to the master.
The Puppet master uses facts provided by the agents to compile detailed data about how each node should be configured — called the catalog — and sends it back to the Puppet agent.
MCollective is an orchestration tool for Puppet, mainly used to programmatically execute actions on clusters of servers. Think Fabric, Capistrano etc. but a lot higher level. More detail here
Hiera is a hierarchical key/value store for Puppet. It allows you to enable a separation of concerns by keeping data in Hiera and code in puppet. More detail here
PuppetDB is a data-warehouse that caches data generated by Puppet, and allows you to leverage that data with an API.
Here's a diagram on how they all fit together in the Enterprise edition:
The OSS won't have the console, but most of the rest of it applies to the OSS edition too. Read more here.
For further questions, there's tons of documentation, IRC rooms and learning materials.