ansible/docsite/latest/rst/playbooks_error_handling.rst

60 lines
1.9 KiB
ReStructuredText
Raw Normal View History

Error Handling
==============
2012-05-13 17:00:02 +02:00
Sometimes a command that returns 0 isn't an error. Sometimes a command might not always
need to report that it 'changed' the remote system. This section describes how to change
the default behavior of Ansible for certain tasks so output and error handling behavior is
as desired.
Ignoring Failed Commands
````````````````````````
2012-10-17 00:15:41 +02:00
.. versionadded:: 0.6
Generally playbooks will stop executing any more steps on a host that
has a failure. Sometimes, though, you want to continue on. To do so,
write a task that looks like this::
- name: this will not be counted as a failure
2013-07-15 19:50:48 +02:00
command: /bin/false
ignore_errors: yes
Creates and Removes
```````````````````
The creates= and removes= flag on commands can say a command does not need to be run again
when a file exists (or does not exist). This can bring "idempotence" to commands that
normally might produce errors when run a second time unneccessarily, or to avoid redundant
command execution.
- name: install the foo
command: /usr/bin/install-the-foo.sh creates=/opt/foo
In the above example, when /opt/foo exists, the command would not be executed. See the
documentation for the command module in `modules` for more information.
2013-07-14 21:43:10 +02:00
Overriding Changed Result
`````````````````````````
.. versionadded:: 1.3
2013-07-21 16:48:22 +02:00
When a shell/command or other module runs it will typically report
2013-07-24 00:49:27 +02:00
"changed" status based on whether it thinks it affected machine state.
2013-07-21 16:48:22 +02:00
Sometimes you will know, based on the return code
or output that it did not make any changes, and wish to override
the "changed" result such that it does not appear in report output or
does not cause handlers to fire::
2013-07-14 21:43:10 +02:00
tasks:
2013-07-21 16:48:22 +02:00
- shell: /usr/bin/billybass --mode="take me to the river"
register: bass_result
changed_when: "bass_result.rc != 2"
# this will never report 'changed' status
- shell: wall 'beep'
2013-07-14 21:43:10 +02:00
2012-05-13 17:00:02 +02:00