Отобразите вывод с Ansible

Я сделал, чтобы Ansible играл для PGBouncer, который отображает некоторый вывод от модуля статистики, встроенного в PGBouncer.

Моя проблема - то, что, когда Ansible печатает вывод к терминалу, он искажает новые строки. Вместо наблюдения

----------
| OUTPUT |
----------

Ясно

----------\n| OUTPUT |\n----------

Кто-либо знает, как получить Ansible к "структурной распечатке программы" вывод?

39
задан 28 October 2014 в 06:11
7 ответов

В Ansible нет способа делать то, что вы хотите, изначально. Вы можете сделать это как обходной путь:

ansible-playbook ... | sed 's/\\n/\n/g'
14
ответ дан 28 November 2019 в 19:45

Вы можете использовать плагин обратного вызова . Это позволит повторно проанализировать ваш вывод, и его легко включить и выключить.

13
ответ дан 28 November 2019 в 19:45

Найдено этим способом на форуме группы Проекта:

- 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') }}"

Мы, по сути, превращаем это в список, разбивая его на новую строку и затем распечатывая этот список.

.
12
ответ дан 28 November 2019 в 19:45

Если вы хотите, чтобы вывод был более понятным для человека, определите:

ANSIBLE_STDOUT_CALLBACK=debug

Это позволит использовать модуль вывода отладки (ранее называвшийся human_log ) whinch , несмотря на его неудачное имя , менее подробный и намного более удобный для чтения людьми.

Если вы получите сообщение об ошибке, что этот модуль недоступен, обновите Ansible или добавьте этот модуль локально, если вы не можете обновить ansible, он будет работать с более чем версиями ansible, такими как 2.0 или вероятно даже 1.9.

Другой вариант настройки - добавить stdout_callback = debug в файл ansible.cfg

63
ответ дан 28 November 2019 в 19:45

Вы можете использовать модуль паузы :

- pause:
    prompt: "{{ variable_blob.stdout }}"

Перемещение без ввода путем определения минут или секунд , но затем пользователя ввод не сохраняется.

Кредит: https://github.com/ansible/ansible/issues/17446#issuecomment-245391682

1
ответ дан 28 November 2019 в 19:45

Если вы хотите увидеть его в формате, практически имитирующем стандартный вывод, вы можете использовать плагин обратного вызова debug с модулем debug в Ansible 2.7+ следующим образом:

- name: "Test Output"
  debug:
    msg: "{{ test_result.stdout_lines | join('\n') }}"
0
ответ дан 28 November 2019 в 19:45

Несмотря на то, что это не конкретный ответ, у меня была та же проблема в моей команде, и мы внедрили ara projet , который представляет собой программное обеспечение с открытым исходным кодом, дружелюбно.

Вы можете посмотреть здесь живую демонстрацию.

0
ответ дан 21 December 2020 в 19:38

Теги

Похожие вопросы