MCollective has many agents and actions, in isolation they can be useful but they are best used in combinations as a series of requests. Thus far people had to write Ruby code interacting with the RPC API to do that - there has been no higher level scripting system.
Further MCollective is hardly ever stand alone in any infrastructure, there are always other sources of truth, other APIs etc. Imagine you might want node lists from Consul or etcd, or some YAML file. Imagine you want to notify webhooks, or run arbitrary shell scripts, or call to systems like Slack for notification or speak to Razor to provision nodes or Terraform for EC2 resources - all of these would be tasks or data stores you’d wish to incorporate in such a script.
Choria Playbooks is an attempt to produce a system that lets you write sets of tasks, inputs, discovery rules and so forth to solve complex infrastructure orchestration problems.
While Playbooks are MCollective centred they support integrating a range of 3rd party components into your flows.
By way of an example here is typical use case I have in mind:
Here we want a playbook that can upgrade one of the 2 tiers - alfa or bravo - by using a number of MCollective agents such as haproxy, nrpe, puppet, appmgr (used to manage our internal app) etc.
We want to do:
Should any step above fail:
Should the upgrade steps pass:
Once this project is complete you’ll be able to express this entire deployment flow as a playbook and run it, schedule it, view past executions and extend it using your own capabilities.
This project is ongoing and not complete, for a view of what is planned and where things stand today see the road map item.