у меня есть Ansible play для PGBouncer который отображает некоторые выходные данные модуля статистики, встроенного в PGBouncer.
Моя проблема в том, что когда Ansible печатает вывод на терминал, он искажает новые строки. Вместо того, чтобы видеть
----------
| OUTPUT |
----------
я вижу
----------\n| OUTPUT |\n----------
Кто-нибудь знает, как заставить Ansible "красиво печатать" вывод?
Если вы хотите, чтобы результат был более удобным для человека, определите:
ANSIBLE_STDOUT_CALLBACK=debug
Это позволит использовать модуль вывода отладки (ранее названный human_log
) whinch несмотря на неудачное название менее подробен и намного легче читается людьми.
Если вы получаете сообщение об ошибке, что этот модуль недоступен, обновите Ansible или добавьте этот модуль локально, если вы не можете обновить ansible, он будет работать с более чем версиями ansible, такими как 2.0 или, возможно, даже 1.9.
Другой вариант настройки - добавить stdout_callback = debug
на свой ansible.cfg
В Ansible нет возможности делать то, что вы хотите, изначально. Вы можете сделать это как обходной путь:
ansible-playbook ... | sed 's/\\n/\n/g'
Вы можете использовать плагин обратного вызова. Это повторно проанализирует ваш вывод, и его легко включить и выключить.
Нашел этот путь на форуме группы Ansible Project:
- name: "Example test"
command:
...
register: test
- name: "Example test stdout"
debug:
msg: "{{ test.stdout.split('\n') }}"
- name: "Example test stderr"
debug:
msg: "{{ test.stderr.split('\n') }}"
Мы в основном превращаем его в список, разделяя его символом новой строки и затем распечатывая этот список.
Если вы не работаете на параллельных хостах, вы можете использовать Пауза модуль:
- pause:
prompt: "{{ variable_blob.stdout }}"
Двигается дальше без ввода, определяя минут или секунды но тогда ввод пользователя не фиксируется.
Кредит: https://github.com/ansible/ansible/issues/17446#issuecomment-245391682
Примечание: На параллельных хостах будет отображаться только вывод с первого хоста
Если вы хотите увидеть его в формате, который практически имитирует стандартный вывод, вы можете использовать debug
плагин обратного вызова с debug
модуль в Ansible 2.7+ вот так:
- name: "Test Output"
debug:
msg: "{{ test_result.stdout_lines | join('\n') }}"