Controlling the STDOUT/STDERR output of plays / suppressing output

2,474 views
Skip to first unread message

johhue

unread,
Aug 26, 2016, 1:46:04 PM8/26/16
to Ansible Project
Hello,

I am getting ready to have our general populace execute patches using Ansible. We are running playbooks with wrapper shell scripts at the moment and do not have Tower evaluated yet.

I would like to control what messages appears to them in the output of plays. Ansible is extremely verbose.

Not everyone understands the JSON formatting and anything "red" or with the "ERROR" string usually we get the hands thrown up and people question. We may have errors like if a directory does not exist, we create it, etc ...

Anyway, I would like to hide the task output of plays which I choose because they do not match the when condition, or are skipped, or are superfluous.

I don't want to send the whole of ansible-playbook to /dev/null and just have a return code. There are messages that are useful to them.

I also don't want to go under the hood and hack with a callback_plugin ... I was hoping there was something out there already.

I am trying no_log which prints this sarcastic message:

TASK [common : Initial check in] ***************************************
ok: [hostA] => {"censored": "the output has been hidden due to the fact that 'no_log: true' was specified for this result"}
ok: [hostB] => {"censored": "the output has been hidden due to the fact that 'no_log: true' was specified for this result"}
ok: [hostC] => {"censored": "the output has been hidden due to the fact that 'no_log: true' was specified for this result"}
ok: [hostD] => {"censored": "the output has been hidden due to the fact that 'no_log: true' was specified for this result"}

Hilarious ... Why print a message saying the output has been hidden?

Ok seriously how can you just not print this play to the screen AT ALL?

central:/app/sysint/bin> ansible --version
ansible 2.1.1.0
  config file = /etc/ansible/ansible.cfg
  configured module search path = Default w/o overrides


John

johhue

unread,
Aug 30, 2016, 1:19:59 PM8/30/16
to Ansible Project

Anyone ... anyone ... Bueller?

Matt Martz

unread,
Aug 30, 2016, 1:29:52 PM8/30/16
to ansible...@googlegroups.com
There is no built in way to achieve this.  You could write your own `stdout` callback plugin that overrides the `_dump_results` method, to not display results when `no_log` was specified, and then register that callback plugin in your ansible.cfg file.

--
You received this message because you are subscribed to the Google Groups "Ansible Project" group.
To unsubscribe from this group and stop receiving emails from it, send an email to ansible-project+unsubscribe@googlegroups.com.
To post to this group, send email to ansible-project@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/ansible-project/e517d943-a1d5-4b8a-b8b0-09f2a63f6291%40googlegroups.com.

For more options, visit https://groups.google.com/d/optout.



--
Matt Martz
@sivel
sivel.net

Bernhard L.

unread,
Aug 30, 2016, 4:28:22 PM8/30/16
to Ansible Project
Hi, 
Some time ago I wrote a little awk-script to filter all output except errors to run playbooks via cronjob and only get emails if errors occured.
It was just for exercising and I used only a few test cases, so it might work or not ;). I don't use it in production, but perhaps it will help you.

Usage: ansible-playbook my_playbook.yml | ansible_silencer.sh

ansible_silencer.sh:
#!/bin/bash
awk '  /^\.\.\.ignoring/ { buffered=0 };
        { if ( buffered==1 ) {
            if ( play_printed==0 ) { print play; play_printed=1; };
            if ( task_printed==0 ) { print "\n" task; task_printed=1; };
            if ( handler_printed==0 ) { print "\n" handler; handler_printed=1; };
                print linebuffer; buffered=0; };};
        /^PLAY/  { play=$0; play_printed=0 };
        /^TASK/  { task=$0; task_printed=0; handler_printed=1 };
        /^RUNNING HANDLER/ { handler=$0; handler_printed=0; task_printed=1 };
        /^fatal:/ { linebuffer=$0; buffered=1 }; '

Reply all
Reply to author
Forward
0 new messages