by choria-legacy

choria-legacy / marionette-collective

The Marionette Collective

208 Stars 204 Forks Last release: Not found Apache License 2.0 1.9K Commits 81 Releases

Available items

No Items, yet!

The developer of this repository has not created any items for sale yet. Need a bug fixed? Help with integration? A different license? Create a request here:

The Marionette Collective

Deprecation Notice

This repository holds legacy code related to The Marionette Collective project. That project has been deprecated by Puppet Inc and the code donated to the Choria Project.

Please review the Choria Project Website and specifically the MCollective Deprecation Notice for further information and details about the future of the MCollective project.


The Marionette Collective aka. mcollective is a framework to build server orchestration or parallel job execution systems.

For documentation please see


The documentation above details how MCollective works and many of its extension points.

Spec Tests

To run spec tests

bundle install
bundle exec rake test

Acceptance Tests

To run acceptance tests, see [this][acceptance].

Development Environment (MacOS)

Setup ActiveMQ using acceptance config:

brew install activemq
cp acceptance/files/activemq.* /usr/local/opt/activemq/libexec/conf
activemq start

ActiveMQ can later by stopped with

activemq stop
. ActiveMQ logs are located at

Setup MCollective with acceptance config:

mkdir -p ~/.puppetlabs/etc/mcollective/ssl-clients
cp acceptance/files/client.* ~/.puppetlabs/etc/mcollective
cp acceptance/files/server.* ~/.puppetlabs/etc/mcollective
cp acceptance/files/ca_crt.pem ~/.puppetlabs/etc/mcollective
cp acceptance/files/client.crt ~/.puppetlabs/etc/mcollective/ssl-clients/client.pem
ln -s ~/.puppetlabs/etc/mcollective/client.cfg ~/.mcollective


to work on the local machine: * Change the
paths to point to
. * Change the
paths to
. Note that
needs to be expanded to the full path. Also, that
doesn't point to an actual file is intentional (I don't fully understand why).


, updating
maincollective = mcollective
collectives = mcollective
loggertype = console
loglevel = info
daemonize = 0

securityprovider = ssl plugin.sslserverprivate = /Users//.puppetlabs/etc/mcollective/server.key plugin.sslserverpublic = /Users//.puppetlabs/etc/mcollective/server.crt plugin.sslclientcert_dir = /Users//.puppetlabs/etc/mcollective/ssl-clients

connector = activemq plugin.activemq.pool.size = 1 = activemq plugin.activemq.pool.1.port = 61613 plugin.activemq.pool.1.user = mcollective plugin.activemq.pool.1.password = marionette plugin.activemq.pool.1.ssl = true = /Users//.puppetlabs/etc/mcollective/ca_crt.pem plugin.activemq.pool.1.ssl.cert = /Users//.puppetlabs/etc/mcollective/server.crt plugin.activemq.pool.1.ssl.key = /Users//.puppetlabs/etc/mcollective/server.key ```

The configuration above uses

as the name of the ActiveMQ broker. MCollective will enforce that the SSL certificate presented by the server matches the name it's trying to connect to. To use the configuration above, traffic to
must be redirected to the local host. On most machines, that can be accomplished with
sudo echo "   activemq" >> /etc/hosts

From the root of this repository, test the setup by running a server

RUBYLIB=lib bundle exec bin/mcollectived --config ~/.puppetlabs/etc/mcollective/server.cfg
and client
RUBYLIB=lib bundle exec bin/mco ping

Note that it may be useful to change the

to debug issues with
mco ping

To enable specific plugins, you may need to set

and add plugin-specific configuration.

We use cookies. If you continue to browse the site, you agree to the use of cookies. For more information on our use of cookies please see our Privacy Policy.