Здесь показаны различия между двумя версиями данной страницы.
| Предыдущая версия справа и слева Предыдущая версия Следующая версия | Предыдущая версия | ||
|
linux:ansible:error [2023/11/27 22:57] werwolf |
linux:ansible:error [2023/11/27 23:13] (текущий) werwolf [failed_when] |
||
|---|---|---|---|
| Строка 1: | Строка 1: | ||
| - | ====Действия в случае ошибки.==== | + | =====Действия в случае ошибки.===== |
| Рассмотрим 2 варианта: | Рассмотрим 2 варианта: | ||
| Строка 9: | Строка 9: | ||
| </note> | </note> | ||
| - | Рассмотрим пример. | + | ====Примеры.==== |
| а) Выполнять задачу после rescue, если основной сценарий выполнился с ошибкой: | а) Выполнять задачу после rescue, если основной сценарий выполнился с ошибкой: | ||
| Строка 45: | Строка 45: | ||
| </code> | </code> | ||
| * в данном примере мы отобразим текст Show error только при наличии ошибки, а также выполним команду rm -f /tmp/test независимо от исхода работы сценария. | * в данном примере мы отобразим текст Show error только при наличии ошибки, а также выполним команду rm -f /tmp/test независимо от исхода работы сценария. | ||
| + | |||
| + | ====any_errors_fatal==== | ||
| + | Чтобы при ошибке выполнения на одном из серверов прекратилось выполнение на всех, нужно добавить any_errors_fatal: true перед блоком задач | ||
| + | |||
| + | <code bash> | ||
| + | - name: test-playbook | ||
| + | hosts: servers | ||
| + | any_errors_fatal: true | ||
| + | tasks: | ||
| + | - name: Создание файла | ||
| + | file: | ||
| + | dest: /home/file.txt | ||
| + | state: touch | ||
| + | owner: root | ||
| + | group: root | ||
| + | mode: 0644 | ||
| + | </code> | ||
| + | |||
| + | ====ignore_errors==== | ||
| + | |||
| + | При запуске playbook, если на одном из серверов какая-либо задаче не выполнилась, то все последующие задачи на этом сервере не будут выполнены, чтобы этого не произошло нужно добавить флаг ignore_errors: yes, тогда если в этой задаче произойдет ошибка последующие все равно будут выполняться. | ||
| + | |||
| + | <code bash> | ||
| + | --- | ||
| + | - name: test-playbook | ||
| + | hosts: servers | ||
| + | tasks: | ||
| + | - name: Создание файла | ||
| + | file: | ||
| + | dest: /home/file.txt | ||
| + | state: touch | ||
| + | owner: root | ||
| + | group: root | ||
| + | mode: 0644 | ||
| + | ignore_errors: yes | ||
| + | </code> | ||
| + | |||
| + | ==== failed_when ==== | ||
| + | Вы можете использовать ключевое слово error_when для управления поведением задачи | ||
| + | |||
| + | Пример: | ||
| + | |||
| + | <code bash> | ||
| + | --- | ||
| + | - 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! | ||
| + | |||
| + | ... | ||
| + | </code> | ||
| + | |||
| + | |||