The Marionette Collective, also known as MCollective, is a framework for building server orchestration or parallel job-execution systems. Most users programmatically execute administrative tasks on clusters of servers.

Deprecation Note: As of Puppet agent 5.5.4, MCollective is deprecated and will be removed in a future version of Puppet agent. If you use MCollective with Puppet Enterprise, consider moving from MCollective to Puppet orchestrator. If you use MCollective with open source Puppet, consider migrating MCollective agents and filters using tools like Bolt and PuppetDB’s Puppet Query Language.

MCollective has some unique strengths for working with large numbers of servers:

Instead of relying on a static list of hosts to command, it uses metadata-based discovery and filtering. It can use a rich data source like PuppetDB, or can perform real-time discovery across the network.

Instead of directly connecting to each host (which can be resource-intensive and slow), it uses publish/subscribe middleware to communicate in parallel with many hosts at once.

To get an immediate feel for what this means, check out the videos on the Screencasts page. Then, keep reading below for further information and links.

We’ve also created a Vagrant-based demo, where you can easily experiment with MCollective.

What is MCollective, and What Does It Allow You to Do?

Interact with clusters of servers, whether in small groups or very large deployments.

Use a broadcast paradigm to distribute requests. All servers receive all requests at the same time, requests have filters attached, and only servers matching the filter will act on requests. There is no central asset database to go out of sync, because the network is the only true source.

Break free from identifying devices through complex host-naming conventions, and instead use a rich set of metadata provided by each machine — from Puppet, Facter, or other sources — to address them.