• This repository has been archived on 28/Nov/2018
  • Stars
    star
    205
  • Rank 191,264 (Top 4 %)
  • Language
    Ruby
  • License
    Apache License 2.0
  • Created about 14 years ago
  • Updated almost 6 years ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

The Marionette Collective

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.

Overview

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

For documentation please see https://docs.puppet.com/mcollective

Developing

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 /usr/local/opt/activemq/libexec/data/activemq.log.

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

Modify client.cfg to work on the local machine:

  • Change the ssl_server_public, ssl_client_private, ssl_client_public paths to point to ~/.puppetlabs/etc/mcollective/{server.crt,client.key,client.pem}.
  • Change the activemq.pool.1.ssl.{ca,cert,key} paths to ~/.puppetlabs/etc/mcollective/{ca_crt.pem,client.crt,client.key}. Note that ~ needs to be expanded to the full path. Also, that client.pem doesn't point to an actual file is intentional (I don't fully understand why).

Create server.cfg, updating <user>:

main_collective = mcollective
collectives = mcollective
logger_type = console
loglevel = info
daemonize = 0

securityprovider = ssl
plugin.ssl_server_private = /Users/<user>/.puppetlabs/etc/mcollective/server.key
plugin.ssl_server_public = /Users/<user>/.puppetlabs/etc/mcollective/server.crt
plugin.ssl_client_cert_dir = /Users/<user>/.puppetlabs/etc/mcollective/ssl-clients

connector = activemq
plugin.activemq.pool.size = 1
plugin.activemq.pool.1.host = 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
plugin.activemq.pool.1.ssl.ca = /Users/<user>/.puppetlabs/etc/mcollective/ca_crt.pem
plugin.activemq.pool.1.ssl.cert = /Users/<user>/.puppetlabs/etc/mcollective/server.crt
plugin.activemq.pool.1.ssl.key = /Users/<user>/.puppetlabs/etc/mcollective/server.key

The configuration above uses activemq 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 activemq must be redirected to the local host. On most machines, that can be accomplished with

sudo echo "127.0.0.1   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 loglevel in client.cfg to debug issues with mco ping.

To enable specific plugins, you may need to set libdir in server.cfg and add plugin-specific configuration.

More Repositories

1

mcollective-plugins

Marionette Collective Plugins
Ruby
143
star
2

mcollective-choria

Distribution of plugins for MCollective as found in Puppet 6
Ruby
56
star
3

mcollective-puppet-agent

MCollective Agent to manage the Puppet Agent
Ruby
53
star
4

stream-replicator

NATS Streaming Topic Replicator
Go
22
star
5

mcollective-shell-agent

Agent to manage long-running shell commands
Ruby
22
star
6

mcollective-nrpe-agent

A MCollective agent to interact with the NRPE monitoring system
Ruby
12
star
7

mcollective-sshkey-security

MCollective Security Plugin that uses your SSH infrastructure to sign messages
Ruby
12
star
8

mcollective-process-agent

MCollective Agent to retrieve process statusses
Ruby
10
star
9

mcollective-package-agent

MCollective Agent to manage the OS Packages
Ruby
10
star
10

mcollective-actionpolicy-auth

MCollective Authorization plugin allowing fine grained ACLs
Ruby
8
star
11

mcollective-logstash-audit

MCollective Audit plugin that produce Logstash compatible audit logs
Ruby
8
star
12

mcollective-filemgr-agent

A MCollective agent that let you touch files, delete or retrieve a bunch stats about a file
Ruby
7
star
13

mcollective-facter-facts

MCollective Fact Source for Facter
Ruby
6
star
14

mcollective-service-agent

MCollective Agent to manage the OS Services
Ruby
6
star
15

prometheus-streams

NATS Stream based federation for Prometheus
Go
6
star
16

mcollective-sysctl-data

MCollective Data Plugin to retrieve Sysctl values on Linux
Ruby
5
star
17

prometheus-file-exporter

Exports metrics found on disk to Prometheus
Go
5
star
18

mcollective-nettest-agent

MCollective Agent to test ICMP and TCP connectivity
Ruby
5
star
19

puppet-nats

NATS.io module for the Choria Orchestrator
Ruby
5
star
20

mcollective-puppetca-agent

MCollective Agent to manage the Puppet Certificate Authority
Ruby
5
star
21

choria-emulator

A emulator and load tester used to scale test Choria
Go
4
star
22

discovery_proxy

Proxy serving Choria discovery requests from PuppetDB
Go
4
star
23

go-network-broker

The Choria Network Broker
Go
3
star
24

go-protocol

Golang implementation of the Choria protocol
Go
3
star
25

mcollective-iptables-agent

Ruby
3
star
26

choria-builder

Create local multi node development collectives
Ruby
2
star
27

go-validator

Golang data validators commonly needed in operations tools
Go
2
star
28

mcorpc-agent-provider

A Choria Agent Provider that provides MCollective compatible RPC Agents and Clients to the Choria Server
Go
1
star
29

go-security

Abstraction over various security systems Choria supports
Go
1
star
30

go-srvcache

SRV Lookup Caching system for Golang Choria
Go
1
star
31

go-puppet

Wrapper around Puppet and Facter allowing Go apps to extract configuration and facts
Go
1
star
32

go-confkey

Utility to map string config file items to Struct keys with validation and data conversion
Go
1
star
33

go-testutil

Testing utilities for testing Choria with Golang
Go
1
star
34

mcollective-ohai-facts

MCollective Fact Plugin that uses Ohai as fact source
Ruby
1
star