=====Действия в случае ошибки.===== Рассмотрим 2 варианта: * Мы, в любом случае, хотим выполнить чать задачь, даже если сценарий прекратит работу из-за ошибки. * Мы хотим выполнить определенное действие, если сценарий прекратит работу из-за ошибки. ** Это возможно реализовать с помощью block + rescue/always. ** ====Примеры.==== а) Выполнять задачу после rescue, если основной сценарий выполнился с ошибкой: - name: Основной сценарий block: ... rescue: - name: Выполнить, если произошла ошибка debug: msg: 'Show error' б) Выполнять задачу после always независимо от результата выполнения основного сценария: - name: Основной сценарий block: ... always: - name: Выполнить в любом случае command: rm -f /tmp/test в) И то и другое: - name: Основной сценарий block: ... rescue: - name: Выполнить, если произошла ошибка debug: msg: 'Show error' always: - name: Выполнить в любом случае command: rm -f /tmp/test * в данном примере мы отобразим текст Show error только при наличии ошибки, а также выполним команду rm -f /tmp/test независимо от исхода работы сценария. ====any_errors_fatal==== Чтобы при ошибке выполнения на одном из серверов прекратилось выполнение на всех, нужно добавить any_errors_fatal: true перед блоком задач - name: test-playbook hosts: servers any_errors_fatal: true tasks: - name: Создание файла file: dest: /home/file.txt state: touch owner: root group: root mode: 0644 ====ignore_errors==== При запуске playbook, если на одном из серверов какая-либо задаче не выполнилась, то все последующие задачи на этом сервере не будут выполнены, чтобы этого не произошло нужно добавить флаг ignore_errors: yes, тогда если в этой задаче произойдет ошибка последующие все равно будут выполняться. --- - name: test-playbook hosts: servers tasks: - name: Создание файла file: dest: /home/file.txt state: touch owner: root group: root mode: 0644 ignore_errors: yes ==== failed_when ==== Вы можете использовать ключевое слово error_when для управления поведением задачи Пример: --- - name: Test ansible hosts: all become: yes tasks: - name: Tasks number1 yum: name=treeee state=present ignore_errors: yes - name: Tasks number2 shell: echo Hellow world register: results failed_when: "'world' in results.stdout" - debug: var: results - name: Tasks number3 shell: echo Privet Man! ...