How to ignore failed command or in case the result set has no output. I need the output should be success if it won’t find anything relevant mentioned in the condition.
/usr/bin/ansible node1 -a “grep ‘value1’ /tmp/test.log” Actually there in no value1 exists in test.log. However, i am getting following output.
node1 | FAILED | rc=1 >>
However, the command ran successfully. Moreover, When i am changing it to the
/usr/bin/ansible node1 -a “grep ‘value1’ /tmp/test.log” -a “ignore_errors= yes”
output is:
node1 | FAILED | rc=2 >>
[Errno 2] No such file or directory
While going through some forum found the following are the codes for it. However, is there any way i can get success in the the result set instead of FAIL.
0 One or more processes were matched.
1 No processes were matched.
2 Invalid options were specified on the command line.
3 An internal error occurred.
How to ignore failed command or in case the result set has no output. I
need the output should be success if it won't find anything relevant
mentioned in the condition.
failed_when is your friend.
https://docs.ansible.com/ansible/playbooks_error_handling.html#controlling-what-defines-failure
node1 | FAILED | rc=1 >>
That is because grep returns that error.
/usr/bin/ansible node1 -a "grep 'value1' /tmp/test.log" -a
"ignore_errors= yes"
Make that an -e instead of an -a and try again. But I am not sure if
this is only valid in playbooks or if it can be used with ansible
ad-hoc commands.
node1 | FAILED | rc=2 >>
[Errno 2] No such file or directory
This is because you made the command look like this:
grep 'value1 ignore_errors= yes
Johannes
Tried -e its giving the same output as with the -a
Any example how to use failed_when in ad-hoc command.
e.g i was trying below. How can i use failed_when here.
/usr/bin/ansible node1 -a “grep ‘value1’ /tmp/test.log”
I want to use the failed_when in following ad-hoc command to ignore the error. Is there any other alternative can be handle in ad hoc command.
/usr/bin/ansible node1 -a “grep ‘value1’ /tmp/test.log”
As nobody came up with a solution, I would assume that failed_when is
only applicable to tasks, not to ad-hoc commands.
Workaround: Use the shell module and make your command exit with an
error != 1:
/usr/bin/ansible node1 -m shell -a "grep 'value1' /tmp/test.log || exit 0"
Johannes