Output Failed even if command gets executed successfully

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

It works !!