Как заставить Ansible игнорировать неудачную извлечение tarball?
У меня есть команда в незанятой пьесе:
- name: extract the tarball
command: tar --ignore-command-error -xvkf release.tar
Ожидается, что некоторые файлы не будут извлечены, поскольку они уже существуют (флаг -k
).
Однако это приводит к невозможности остановки общей пьесы, так как есть код ошибки из извлечения tar.
Как я могу обойти это? Как вы можете видеть, я пробовал --ignore-command-error
безрезультатно.
Ответы
Ответ 1
Вы хотите использовать аргумент ignore_errors
:
- name: extract the tarball
command: tar --ignore-command-error -xvkf release.tar
ignore_errors: yes
См. "Игнорировать неудачные команды" на странице документации по обработке ошибок.
ignore_errors
работает лучше всего, когда вы можете обнаружить успех в некотором роде - вы можете register
выводить и проверять это, или вы можете использовать creates
для поиска определенного имени файла.
Ответ 2
ignore_errors: yes
по-прежнему вызывает ошибку, отображающую неудачную задачу в приглашении. Если вы хотите, чтобы эта задача терпела неудачу, вы можете установить failed_when: false
или более сложное состояние, как описано в руководстве:
- name: this command prints FAILED when it fails
command: /usr/bin/example-command -x -y -z
register: command_result
failed_when: "'FAILED' in command_result.stderr"
Итак, вы можете искать вывод stderr
. Возможно, вы все еще хотите сбой, если файл не читается, не существует или что-то еще, но не прерывается, когда архив разбит и не может быть извлечен.