Can ansible do dshbak-like output?

Hello,

I use “ansible -m shell” quite a bit. I would like ansible to not show me the output multiple times if it is identical on several machines. The dshbak tool for pdsh [0] and clush -b from clustershell [1] are examples of similar tools that behave in the desired way. I wrote a simple proof of concept for ansible at https://github.com/jrib/ansbak .

What happens now:

$ ansible host1:host2 -m shell -a ‘echo foo\nbar’
host1 | success | rc=0 >>
foo
bar

host2 | success | rc=0 >>
foo
bar

What I want to happen:

$ ansible host1:host2 -m shell -a ‘echo foo\nbar’ | ansbak.py
[‘host1’, ‘host2’] | success | rc=0 >>
foo
bar

My questions are:

  1. Does something like this already exist?
  2. Is ansbak a good approach? What features should I add?
  3. Would it be preferable to add this feature directly to ansible? (hints where welcomed)

Thanks!
Jason

[0] https://code.google.com/p/pdsh/
[1] http://cea-hpc.github.io/clustershell/

Doesn’t currently exist, I suspect architecturally that wouldn’t fit for a large number of systems that exceed the fork count, but you might have a go and find out :slight_smile:

– Michael

FWIW I would second having such a feature builtin, e.g. even just having something like a --collate option would be really nice. --diff could be also very neat to not just collate common output as a whole into one, but rather visualize where output is the same (across all hosts) and where differs. Both modes would be useful not only for -m shell but others (e.g. setup) as well, so not really module dependent.

Cheers!

I’d welcome experimentation with the callbacks classes maybe, I don’t think a thing on top of ansible is appropriate.