Как получить журналы / сведения о выполнении модуля 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 " echo'Ed / printed моим скриптом на удаленном хосте (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
редактировать например вывод:
_____________________________________ < 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.журнал
Включить Отладку
экспорт ANSIBLE_DEBUG=True
чтобы проверить этот сгенерированный файл журнала.
меньше $ANSIBLE_LOG_PATH
Ansible справка из командной строки, например
ansible-playbook --help
показывает, как увеличить детализацию вывода, установив режим детализации (-v) на более детализацию (-vvv) или на детализацию отладки соединения (-vvvv). Это должно дать вам некоторые детали, которые вы ищете в stdout, которые затем можно зарегистрировать.