Одна из моих заданий импортирует базу данных Oracle, используя impdp
.
Это генерирует большой вывод на консоль, поэтому я установил no_log: True
.
Тем не менее, когда это не удается, я хочу увидеть журнал!
Как я могу сделать этот конкретный журнал задач в файл, а не на консоль?
failed_when
условие, и удалить файл журнала, если пред. задание было-vvv
послеansible-playbook
команды для получения подробных журналов.Ответы:
[Преобразование моего комментария в ответ]
Один из способов сделать это - записать журналы в какой-нибудь внешний файл, а затем выполнить задачу, которая использует условие fail_when, и удалить файл журнала, если предыдущая задача была успешной.
Нечто подобное должно помочь вам.
Примечание. Возможно, это не лучший способ решения вашей проблемы. Но это был хак, который помог мне сделать логирование и мониторинг.
источник
Я думаю, что все, что вам нужно сделать, это зарегистрировать вывод каждой необходимой вам команды (сохранить ее в переменной), а затем просто вывести переменную в файл. Таким образом, вы можете просмотреть его позже.
Тогда в dumpall.j2:
Пример, который я использую, отсюда
источник
Я решил это, добавив
на no_log-задачу. Это заставляет ansible продолжать выполнение следующей задачи, даже если она не выполнена. Затем для следующей задачи определите задачу отладки, которая всегда дает сбой и выводит зарегистрированную переменную, но запускается только в случае сбоя предыдущей задачи:
Так что даже с no_log: true, это сделает ANSIBLE отображать результаты неудачной задачи. Это решение не записывает его в файл в соответствии с запросом, но удовлетворяет потребность в «просмотре журнала в случае сбоя», и, конечно, вы можете перенаправить или использовать tee для вывода полного ответного вывода в файл, что и в этом решении также содержат журнал невыполненной задачи.
источник
То, что я делаю, когда у меня есть команда для выполнения и я хочу получить журнал только в случае сбоя, выглядит следующим образом (с префиксом команды оболочки, как
/bin/sh -c '...'
в случае, если инициатор не используетsystem
вызов или не выполняет команду напрямую без оболочки) :Это перенаправит ошибку и стандартный вывод в файл и отобразит содержимое файла только в случае сбоя. Если команда очень многословна и вы не хотите вести журнал, когда все в порядке, вы можете перейти с:
Цитата
&&
и||
использование sh manpage :Вероятно, это не самый идиоматичный способ сделать это с ANSIBLE, но его преимущество в том, что он очень переносим с любой системой управления конфигурацией, позволяющей отображать стандартный вывод команды.
источник
При условии, что ansible правильно генерирует ошибки в stderr, вы можете записать вывод ошибок в любой программе в файл, используя перенаправление вывода:
some command 2> error.log
Однако я не думаю, что это так.
Вместо этого вы, скорее всего, захотите обратиться к этому руководству, чтобы решить, когда будут возникать ошибки, http://docs.ansible.com/ansible/playbooks_error_handling.html, а затем grep перед выводом строк, указывающих на ошибку, перед выводом в файл.
то есть.
ansible-playbook my-playbook | grep 'error' > error.log
источник
Я думаю, что вы ищете, может быть слишком просто перенаправить стандартный вывод и улицу в файл.
Обычно some-command &> logfile.log
или какой-то вариант ....
источник
Это будет очень простой инструмент для регистрации, вы можете обратиться к следующей команде.
источник