Using With Chef

Using With Chef

If you’re a Chef user you are supported in both facts and classes filters.


There is a community plugin to enable Ohai as a fact source.

Using this plugin Ohai facts will be converted from:

"languages": {
    "java": {
      "runtime": {
        "name": "OpenJDK  Runtime Environment",
        "build": "1.6.0-b09"
      "version": "1.6.0"


 ""=>"OpenJDK  Runtime Environment",

So you can use the flattened versions of the information provided by Ohai in filters, reports etc.

% mco find --with-fact

Class Filters

Chef does not provide a list of roles and recipes that has been applied to a node, to use with MCollective you need to create such a list.

It’s very easy with Chef to do this in a simple cookbook. Put the following code in a cookbook and arrange for it to run last on your node.

This will create a list of all roles and recipes in /var/tmp/chefnode.txt on each node for us to use:

ruby_block "store node data locally" do
  block do
    state ="/var/tmp/chefnode.txt", "w")

    node.run_state[:seen_recipes].keys.each do |recipe|

    node.run_list.roles.each do |role|


You should configure MCollective to use this file by putting the following in your server.cfg

classesfile = /var/tmp/chefnode.txt

You can now use your roles and recipe lists in filters:

% mco find --with-class role.webserver --with-class /apache/

↑ Back to top