Как я могу захватить, когда задача в playbook ansible
сбой, следовательно, сбой тоже не работает?Захват Ошибки с ошибкой с помощью Fabric
Я использую fabric
, чтобы обернуть команду ansible-playbook
, и это то, что я сейчас использую.
command = local(
"sudo ansible-playbook %s --extra-vars \"project=%s role=%s env=%s version=%s enterprise=%s\""
" --private-key ../inventory/keys/%s" %
(playbook, project, role, environment, version, enterprise, enterprise), capture=True)
if command:
if command.stderr:
print(cyan(command.stderr))
else:
print(green(command.stdout))
print(blue("\nConfigured %s [%s] in %s stack" %
(project, role, environment)))
else:
print(red("\nError configuring %s cloudformation resource stack:::: %s"
% role, command.stderr))
Как вы можете видеть, у меня есть команда, и я беру вывод. Проблема заключается в том, что command.stderr
происходит только тогда, когда команда ansible-playbook
не работает, например, когда ansible
не может подключиться к хосту и т. Д., Но не тогда, когда task
в проигрывателе сработает. когда это происходит, мой код все еще считает, что команда действительно успешно завершена.
Примеры ниже; (Это не захвачен command.stderr)
TASK [example.cloudformation : Launch cloudformation template] ****************
An exception occurred during task execution. To see the full traceback, use -vvv. The error was: TemplateSyntaxError: expected name or number
fatal: [127.0.0.1]: FAILED! => {"failed": true, "msg": "Unexpected failure during module execution.", "stdout": ""}
to retry, use: --limit @example_stack_launch.retry
Я предполагаю, что это связано с ansible callbacks
, но не знаю, как выставлять и использовать их.