Update mcollective.init according to OSCI-855
[packages/precise/mcollective.git] / website / reference / integration / puppet.md
1 ---
2 layout: default
3 title: Using with Puppet
4 toc: false
5 ---
6 [FactsRLFacter]: http://projects.puppetlabs.com/projects/mcollective-plugins/wiki/FactsFacterYAML
7 [PluginSync]: http://docs.reductivelabs.com/guides/plugins_in_modules.html
8 [AgentPuppetd]: http://projects.puppetlabs.com/projects/mcollective-plugins/wiki/AgentPuppetd
9 [AgentPuppetca]: http://github.com/puppetlabs/mcollective-plugins/tree/master/agent/puppetca/
10 [AgentPuppetRal]: http://github.com/puppetlabs/mcollective-plugins/tree/master/agent/puppetral/
11 [PuppetCommander]: http://github.com/puppetlabs/mcollective-plugins/tree/master/agent/puppetd/commander/
12 [RapidRuns]: http://www.devco.net/archives/2010/08/05/rapid_puppet_runs_with_mcollective.php
13 [EC2Bootstrap]: http://www.devco.net/archives/2010/07/14/bootstrapping_puppet_on_ec2_with_mcollective.php
14 [PuppetRalBlog]: http://www.devco.net/archives/2010/07/07/puppet_resources_on_demand.php
15 [SchedulingPuppet]: http://www.devco.net/archives/2010/03/17/scheduling_puppet_with_mcollective.php
16 [ManagingPuppetd]: http://www.devco.net/archives/2009/11/30/managing_puppetd_with_mcollective.php
17 [CloudBootstrap]: http://vuksan.com/blog/2010/07/28/bootstraping-your-cloud-environment-with-puppet-and-mcollective/
18 [ServiceAgent]: http://projects.puppetlabs.com/projects/mcollective-plugins/wiki/AgentService
19 [PackageAgent]: http://projects.puppetlabs.com/projects/mcollective-plugins/wiki/AgentPackage
20 [Facter2YAML]: http://www.semicomplete.com/blog/geekery/puppet-facts-into-mcollective.html
21
22 If you're a Puppet user you are supported in both facts and classes filters.
23
24 There are a number of community plugins related to Puppet:
25
26  * Manage the Puppetd, request runs, enable and disable - [AgentPuppetd]
27  * Manage the Puppet CA, sign, list and revoke certificates - [AgentPuppetca]
28  * Use the Puppet Ral to create resources on demand, a distributed *ralsh* - [AgentPuppetRal]
29  * Schedule your puppetd's controlling concurrency and resource usage - [PuppetCommander]
30  * The [ServiceAgent] and [PackageAgent] use the Puppet RAL to function on many operating systems
31
32 There are also several blog posts related to Puppet and MCollective:
33
34  * Running puppet on a number of nodes as quick as possible - [RapidRuns]
35  * Bootstrapping a Puppet + EC2 environment with Puppet - [EC2Bootstrap]
36  * Using the Puppet RAL with MCollective - [PuppetRalBlog]
37  * General scheduling of Puppet Runs - [SchedulingPuppet]
38  * Managing Puppetd - [ManagingPuppetd]
39  * Bootstrapping your cloud environment - [CloudBootstrap]
40
41 ## Facts
42 There is a [community plugin to enable Facter][FactsRLFacter] as a fact source.
43
44 So you can use the facts provided by Facter in filters, reports etc.
45
46 {% highlight console %}
47 $ mco find --with-fact lsbdistrelease=5.4
48 {% endhighlight %}
49
50 This includes facts pushed out with [Plugin Sync][PluginSync].
51
52 A less resource intensive approach has can be found [here][Facter2YAML], it converts the Puppet scope into a YAML file that the YAML fact source then loads.  This is both less resource intensive and much faster.
53
54 ## Class Filters
55 Puppet provides a list of classes applied to a node by default in */var/puppet/state/classes.txt* or */var/lib/puppet/state/classes.txt* (depending on which Puppet version you are using. The latter is true for 0.25.5 onwards) , we'll use this data with *--with-class* filters.
56
57 You should configure MCollective to use this file by putting the following in your *server.cfg*
58
59
60 {% highlight ini %}
61 classesfile = /var/lib/puppet/classes.txt
62 {% endhighlight %}
63
64 or if using Puppet 0.23.0 and onwards
65
66 {% highlight ini %}
67 classesfile = /var/lib/puppet/state/classes.txt
68 {% endhighlight %}
69
70 You can now use your classes lists in filters:
71
72 {% highlight console %}
73 $ mco find --with-class /apache/
74 {% endhighlight %}