a5c747d24b27d171a104371d1f184c0655169b73
[packages/precise/mcollective.git] / website / index.md
1 ---
2 layout: default
3 title: Marionette Collective
4 toc: false
5 ---
6 [Func]: https://fedorahosted.org/func/
7 [Fabric]: http://fabfile.org/
8 [Capistrano]: http://www.capify.org
9 [Publish Subscribe Middleware]: http://en.wikipedia.org/wiki/Publish/subscribe
10 [Screencasts]: /mcollective/screencasts.html
11 [Amazon EC2 based demo]: /mcollective/ec2demo.html
12 [broadcast paradigm]: /mcollective/reference/basic/messageflow.html
13 [UsingWithPuppet]: /mcollective/reference/integration/puppet.html
14 [UsingWithChef]: /mcollective/reference/integration/chef.html
15 [Facter]: http://projects.puppetlabs.com/projects/mcollective-plugins/wiki/FactsFacterYAML
16 [Ohai]: http://projects.puppetlabs.com/projects/mcollective-plugins/wiki/FactsOhai
17 [WritingFactsPlugins]: /mcollective/reference/plugins/facts.html
18 [NodeReports]: /mcollective/reference/ui/nodereports.html
19 [PluginsSite]: http://projects.puppetlabs.com/projects/mcollective-plugins/wiki
20 [SimpleRPCIntroduction]: /mcollective/simplerpc/
21 [SecurityOverview]: /mcollective/security.html
22 [SecurityWithActiveMQ]: /mcollective/reference/integration/activemq_security.html
23 [SSLSecurityPlugin]: /mcollective/reference/plugins/security_ssl.html
24 [AESSecurityPlugin]: /mcollective/reference/plugins/security_aes.html
25 [SimpleRPCAuthorization]: /mcollective/simplerpc/authorization.html
26 [SimpleRPCAuditing]: /mcollective/simplerpc/auditing.html
27 [ActiveMQClusters]: /mcollective/reference/integration/activemq_clusters.html
28 [JSONSchema]: http://json-schema.org/
29 [Registration]: /mcollective/reference/plugins/registration.html
30 [GettingStarted]: /mcollective/reference/basic/gettingstarted.html
31 [Configuration]: /mcollective/reference/basic/configuration.html
32 [Terminology]: /mcollective/terminology.html
33 [devco]: http://www.devco.net/archives/tag/mcollective
34 [mcollective-users]: http://groups.google.com/group/mcollective-users
35 [WritingAgents]: /mcollective/reference/basic/basic_agent_and_client.html
36 [ActiveMQ]: /mcollective/reference/integration/activemq_security.html
37 [MessageFormat]: /mcollective/reference/basic/messageformat.html
38 [ChangeLog]: /mcollective/changelog.html
39 [server_config]: /mcollective/configure/server.html
40
41 The Marionette Collective AKA mcollective is a framework to build server
42 orchestration or parallel job execution systems.
43
44 Primarily we'll use it as a means of programmatic execution of Systems Administration
45 actions on clusters of servers.  In this regard we operate in the same space as tools
46 like [Func], [Fabric] or [Capistrano].
47
48 We've attempted to think out of the box a bit designing this system by not relying on
49 central inventories and tools like SSH, we're not simply a fancy SSH "for loop".  MCollective use modern tools like
50 [Publish Subscribe Middleware] and modern philosophies like real time discovery of network resources using meta data
51 and not hostnames.  Delivering a very scalable and very fast parallel execution environment.
52
53 To get an immediate feel for what I am on about you can look at some of the videos on the
54 [Screencasts] page and then keep reading below for further info and links.  We've also created an [Amazon EC2 based demo]
55 where you can launch as many instances as you want to see how it behaves first hand.
56
57 ## What is MCollective and what does it allow you to do
58
59  * Interact with small to very large clusters of servers
60  * Use a [broadcast paradigm] for request distribution.  All servers get all requests at the same time, requests have
61    filters attached and only servers matching the filter will act on requests.  There is no central asset database to
62    go out of sync, the network is the only source of truth.
63  * Break free from ever more complex naming conventions for hostnames as a means of identity.  Use a very
64    rich set of meta data provided by each machine to address them.  Meta data comes from
65    [Puppet][UsingWithPuppet], [Chef][UsingWithChef], [Facter], [Ohai] or [plugins][WritingFactsPlugins] you provide yourself.
66  * Comes with simple to use command line tools to call remote agents.
67  * Ability to write [custom reports][NodeReports] about your infrastructure.
68  * A number of agents to manage packages, services and other common components are [available from
69    the community][PluginsSite].
70  * Allows you to write [simple RPC style agents, clients][SimpleRPCIntroduction] and Web UIs in an easy to understand language - Ruby
71  * Extremely pluggable and adaptable to local needs
72  * Middleware systems already have rich [authentication and authorization models][SecurityWithActiveMQ], leverage these as a first
73    line of control.  Include fine grained Authentication using [SSL][SSLSecurityPlugin] or [RSA][AESSecurityPlugin], [Authorization][SimpleRPCAuthorization] and
74    [Auditing][SimpleRPCAuditing] of requests.  You can see more details in the [Security Overview][SecurityOverview].
75  * Re-use the ability of middleware to do [clustering, routing and network isolation][ActiveMQClusters]
76    to realize secure and scalable setups.
77
78 ## Pluggable Core
79 We aim to provide a stable core framework that allows you to build it out into a system that meets
80 your own needs, we are pluggable in the following areas:
81
82  * Replace our choice of middleware - STOMP compliant middleware - with your own like AMQP based.
83  * Replace our authorization system with one that suits your local needs
84  * Replace our serialization - Ruby Marshal and YAML based - with your own like [JSONSchema] that is cross language.
85  * Add sources of data, we support [Chef][UsingWithChef] and [Puppet][UsingWithPuppet].   You can
86    [provide a plugin to give us access to your tools data][WritingFactsPlugins].
87    The community have ones for [Facter and Ohai already][PluginsSite]
88  * Create a central inventory of services [leveraging MCollective as transport][Registration]
89    that can run and distribute inventory data on a regular basis.
90
91 MCollective is licensed under the Apache 2 license.
92
93 ## Next Steps and Further Reading
94
95 ### Introductory and Tutorial Pages
96  * See it in action in our [Screencasts]
97  * Read the [GettingStarted], [Server Configuration Reference][server_config], and [Configuration] guides for installation instructions
98  * Read the [Terminology] page if you see any words where the meaning in the context of MCollective is not clear
99  * Read the [ChangeLog] page to see how MCollective has developed
100  * Learn how to write basic reports for your servers - [NodeReports]
101  * Learn how to write simple Agents and Clients using our [Simple RPC Framework][SimpleRPCIntroduction]
102  * The author maintains some agents and clients on another project [here][PluginsSite].
103  * The author has written [several blog posts][devco] about mcollective.
104  * Subscribe and post questions to the [mailing list][mcollective-users].
105
106 ### Internal References and Developer Docs
107  * Finding it hard to do something complex with Simple RPC? See [WritingAgents] for what lies underneath
108  * Role based security, authentication and authorization using [ActiveMQ]
109  * Structure of [Request and Reply][MessageFormat] messages
110