Как получить журналы / сведения о выполнении модуля 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, которые затем можно зарегистрировать.