Как получить журналы / сведения о выполнении модуля ansible-playbook?

скажем, я выполняю следующее.

$ cat test.sh
#!/bin/bash
echo Hello World
exit 0

$ cat Hello.yml
---

- hosts: MyTestHost
  tasks:
  - name: Hello yourself
    script: test.sh


$ ansible-playbook  Hello.yml

PLAY [MyTestHost] ****************************************************************

GATHERING FACTS ***************************************************************
ok: [MyTestHost]

TASK: [Hello yourself] ********************************************************
ok: [MyTestHost]

PLAY RECAP ********************************************************************
MyTestHost                    : ok=2    changed=0    unreachable=0    failed=0

$

Я точно знаю, что это было успешно.

где / как я вижу" Hello World", Эхо / напечатанное моим скриптом на удаленном хосте (MyTestHost)? Или код возврата/выхода скрипта?

мои исследования показывают, что можно было бы написать плагин для перехвата обратных вызовов выполнения модуля или что-то в этих строках и написать файл журнала. Я бы предпочел не тратить время что.

например. что-то вроде stdout ниже (обратите внимание, что я запускаю ansible, а не ansible-playbook):

$ ansible plabb54 -i /project/plab/svn/plab-maintenance/ansible/plab_hosts.txt -m script -a ./test.sh
plabb54 | success >> {
    "rc": 0,
    "stderr": "",
    "stdout": "Hello Worldn"
}

$

5 ответов


если вы пройдете -v флаг в ansible-playbook в командной строке вы увидите stdout и stderr для каждой выполняемой задачи:

$ ansible-playbook -v playbook.yaml

Ansible также имеет встроенную поддержку ведения журнала. Добавьте следующие строки в свой файл конфигурации ansible:

[defaults] 
log_path=/path/to/logfile

Ansible будет искать конфигурационный файл в нескольких местах:

  • ansible.cfg в текущем каталоге, в котором вы бежали ansible-playbook
  • ~/.ansible.cfg
  • /etc/ansible/ansible.cfg

задача сценария playbook будет генерировать stdout как и команда non-playbook, ее просто нужно сохранить в переменную с помощью register. Как только мы получим это,модуль отладки может печатать в выходной поток playbook.

tasks:
- name: Hello yourself
  script: test.sh
  register: hello

- name: Debug hello
  debug: var=hello

- name: Debug hello.stdout as part of a string
  debug: "msg=The script's stdout was `{{ hello.stdout }}`."

вывод должен выглядеть примерно так:

TASK: [Hello yourself] ******************************************************** 
changed: [MyTestHost]

TASK: [Debug hello] *********************************************************** 
ok: [MyTestHost] => {
    "hello": {
        "changed": true, 
        "invocation": {
            "module_args": "test.sh", 
            "module_name": "script"
        }, 
        "rc": 0, 
        "stderr": "", 
        "stdout": "Hello World\r\n", 
        "stdout_lines": [
            "Hello World"
        ]
    }
}

TASK: [Debug hello.stdout as part of a string] ******************************** 
ok: [MyTestHost] => {
    "msg": "The script's stdout was `Hello World\r\n`."
}

используя плагины обратного вызова, вы можете иметь stdout ваших команд, выводимых в читаемой форме с помощью воспроизведения: суть: human_log.py

Edit например вывод:

 _____________________________________
< TASK: common | install apt packages >
 -------------------------------------
        \   ^__^
         \  (oo)\_______
            (__)\       )\/\
                ||----w |
                ||     ||


changed: [10.76.71.167] => (item=htop,vim-tiny,curl,git,unzip,update-motd,ssh-askpass,gcc,python-dev,libxml2,libxml2-dev,libxslt-dev,python-lxml,python-pip)

stdout:
Reading package lists...
Building dependency tree...
Reading state information...
libxslt1-dev is already the newest version.
0 upgraded, 0 newly installed, 0 to remove and 24 not upgraded.


stderr:

start:
2015-03-27 17:12:22.132237

end:
2015-03-27 17:12:22.136859

существует также другой способ создания файла журнала.

перед ansible-playbook выполните следующие команды, чтобы включить ведение журнала:

  • укажите расположение файла журнала.

    экспорт ANSIBLE_LOG_PATH=~ / ansible.log

  • Включить Отладку

    экспорт ANSIBLE_DEBUG=True

  • чтобы проверить этот сгенерированный файл журнала.

    меньше $ANSIBLE_LOG_PATH


Ansible справка командной строки, например ansible-playbook --help показывает, как увеличить многословие вывода, установив режим многословия (- v) на более многословие (-vvv) или на многословие отладки соединения (-vvvv). Это должно дать вам некоторые детали, которые вы ищете в stdout, которые затем можно зарегистрировать.