Я сделал, чтобы Ansible играл для PGBouncer, который отображает некоторый вывод от модуля статистики, встроенного в PGBouncer.
Моя проблема - то, что, когда Ansible печатает вывод к терминалу, он искажает новые строки. Вместо наблюдения
----------
| OUTPUT |
----------
Ясно
----------\n| OUTPUT |\n----------
Кто-либо знает, как получить Ansible к "структурной распечатке программы" вывод?
В Ansible нет способа делать то, что вы хотите, изначально. Вы можете сделать это как обходной путь:
ansible-playbook ... | sed 's/\\n/\n/g'
Вы можете использовать плагин обратного вызова . Это позволит повторно проанализировать ваш вывод, и его легко включить и выключить.
Найдено этим способом на форуме группы Проекта:
- 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') }}"
Мы, по сути, превращаем это в список, разбивая его на новую строку и затем распечатывая этот список.
.Если вы хотите, чтобы вывод был более понятным для человека, определите:
ANSIBLE_STDOUT_CALLBACK=debug
Это позволит использовать модуль вывода отладки (ранее называвшийся human_log
) whinch , несмотря на его неудачное имя , менее подробный и намного более удобный для чтения людьми.
Если вы получите сообщение об ошибке, что этот модуль недоступен, обновите Ansible или добавьте этот модуль локально, если вы не можете обновить ansible, он будет работать с более чем версиями ansible, такими как 2.0 или вероятно даже 1.9.
Другой вариант настройки - добавить stdout_callback = debug
в файл ansible.cfg
Вы можете использовать модуль паузы :
- 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') }}"
Несмотря на то, что это не конкретный ответ, у меня была та же проблема в моей команде, и мы внедрили ara projet , который представляет собой программное обеспечение с открытым исходным кодом, дружелюбно.
Вы можете посмотреть здесь живую демонстрацию.