# Feature RFC: allow task failures to trigger non-zero exit codes

**URL:** <https://forum.ansible.com/t/feature-rfc-allow-task-failures-to-trigger-non-zero-exit-codes/14316>\
**Category:** Ansible Project\
**Created:** [January 10, 2014, 7:01pm UTC](https://forum.ansible.com/t/feature-rfc-allow-task-failures-to-trigger-non-zero-exit-codes/14316 "2014-01-10T19:01:36Z")\
**Posts on this page:** 3\
**Page:** 1

<div class="post-metadata">

**Author:** ![Mike\_Bain](https://avatars.discourse-cdn.com/v4/letter/m/f6c823/32.png) [@Mike\_Bain](https://forum.ansible.com/u/Mike_Bain)\
**Post date:** [January 10, 2014, 7:01pm UTC](https://forum.ansible.com/t/feature-rfc-allow-task-failures-to-trigger-non-zero-exit-codes/14316/1 "2014-01-10T19:01:36Z")

</div>

+1 Having an option for ansible to return an exit code if a task fails would be good for us. We also have automated ansible scripts and rely on exit codes to know if the ansible commands worked or not.

I think of ansible as being great tool to run a users tasks. From this user centric point of view when a task fails the whole process has failed, even if technically ansible itself hasn’t actually failed. I do care if ansible fails, and also care if one of my tasks fails.

The current ansible return code setup feels like a browser not showing me an error response because it handled the web servers error correctly.

Currently, to get a non zero exit code on ansible task failures I pipe the ansible output into perl:

ansible-playbook | perl -pe ‘END { exit $status } $status=1 if /FAILED:|Failed:/;’

Cheers

Mike

---

<div class="post-metadata">

**Author:** ![Stephen\_Bunn](https://avatars.discourse-cdn.com/v4/letter/s/4da419/32.png) [@Stephen\_Bunn](https://forum.ansible.com/u/Stephen_Bunn)\
**Post date:** [October 19, 2016, 12:57am UTC](https://forum.ansible.com/t/feature-rfc-allow-task-failures-to-trigger-non-zero-exit-codes/14316/2 "2016-10-19T00:57:50Z")

</div>

+1 here; having ansible-playbook return a 0 exit code when tasks fail make automating with a CI server more difficult then it has to be.

---

<div class="post-metadata">

**Author:** ![Josh\_Smift1](https://avatars.discourse-cdn.com/v4/letter/j/bcef8e/32.png) [@Josh\_Smift1](https://forum.ansible.com/u/Josh_Smift1)\
**Post date:** [October 19, 2016, 1:37am UTC](https://forum.ansible.com/t/feature-rfc-allow-task-failures-to-trigger-non-zero-exit-codes/14316/3 "2016-10-19T01:37:12Z")

</div>

> +1 here; having ansible-playbook return a 0 exit code when tasks fail  
> make automating with a CI server more difficult then it has to be.

Do you have an example of this behavior? I feel like Ansible generally  
exits non-zero if a task fails. This playbook, for example:

&nbsp;&nbsp;- hosts: host1  
&nbsp;&nbsp;&nbsp;&nbsp;gather\_facts: False  
&nbsp;&nbsp;&nbsp;&nbsp;tasks:  
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;- command: touch /tmp/exit-code-test

&nbsp;&nbsp;- hosts: host1:host2  
&nbsp;&nbsp;&nbsp;&nbsp;gather\_facts: False  
&nbsp;&nbsp;&nbsp;&nbsp;tasks:  
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;- command: rm /tmp/exit-code-test

The rm fails on host2, where the file doesn't exist, and ansible-playbook  
exits non-zero.

Similarly:

&nbsp;&nbsp;ansible host1 -a 'rm /tmp/exit-code-test'

(when the file doesn't exist) exits non-zero.

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;-Josh (jbs@care.com)

(apologies for the automatic corporate disclaimer that follows)

This email is intended for the person(s) to whom it is addressed and may contain information that is PRIVILEGED or CONFIDENTIAL. Any unauthorized use, distribution, copying, or disclosure by any person other than the addressee(s) is strictly prohibited. If you have received this email in error, please notify the sender immediately by return email and delete the message and any attachments from your system.
