То, что я делаю, когда у меня есть команда для выполнения и я хочу получить журнал только в случае сбоя, выглядит следующим образом (с префиксом команды оболочки, как /bin/sh -c '...'
в случае, если инициатор не использует system
вызов или не выполняет команду напрямую без оболочки) :
command 2&>1 > command-log.txt || cat command-log.txt
Это перенаправит ошибку и стандартный вывод в файл и отобразит содержимое файла только в случае сбоя. Если команда очень многословна и вы не хотите вести журнал, когда все в порядке, вы можете перейти с:
command 2&>1 > command-log.txt && rm command-log.txt || cat command-log.txt
Цитата &&
и ||
использование sh manpage :
Символ && (||) заставляет выполнение следующего списка только в том случае, если предыдущий конвейер возвращает нулевое (ненулевое) значение.
Вероятно, это не самый идиоматичный способ сделать это с ANSIBLE, но его преимущество в том, что он очень переносим с любой системой управления конфигурацией, позволяющей отображать стандартный вывод команды.