logging ansible

logging - ¿Cómo obtengo los registros/detalles de las ejecuciones del módulo ansible-playbook?



(5)

Digamos que ejecuto lo siguiente.

$ 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 $

Sé con certeza que fue un éxito.

¿Dónde / cómo veo el "Hello World" echo''ed / printed por mi script en el host remoto (MyTestHost)? ¿O el código de retorno / salida del script?

Mi investigación me muestra que sería posible escribir un complemento para interceptar devoluciones de llamadas de ejecución de módulos o algo así y escribir un archivo de registro. Preferiría no perder el tiempo con eso.

Por ejemplo, algo así como la stdout en la parte inferior (tenga en cuenta que estoy ejecutando ansible y no 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 World/n" } $


Al usar los complementos de devolución de llamada, puede hacer que la salida estándar de los comandos se emita en forma legible con el juego : gist: human_log.py

Edite, por ejemplo, salida:

_____________________________________ < 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


La ayuda de la línea de comandos de Ansible, como ansible-playbook --help muestra cómo aumentar la verbosidad de los resultados configurando el modo detallado (-v) en más verbosidad (-vvv) o en la depuración de la conexión (-vvvv). Esto debería darle algunos de los detalles que busca en stdout, que luego puede registrar.


La tarea de secuencia de comandos de stdout generará stdout igual que el comando que no es de Playbook, solo necesita guardarse en una variable usando register . Una vez que tenemos eso, el módulo de depuración puede imprimir en la secuencia de salida del libro de jugadas.

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 }}`."

La salida debería verse más o menos así:

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`." }


Si pasa el -v a ansible-playbook en la línea de comando, verá el stdout y el stderr para cada tarea ejecutada:

$ ansible-playbook -v playbook.yaml

Ansible también tiene soporte integrado para el registro. Agregue las siguientes líneas a su archivo de configuración ansible :

[defaults] log_path=/path/to/logfile

Ansible buscará en varios lugares el archivo de configuración:

  • ansible.cfg en el directorio actual donde ejecutó ansible-playbook
  • ~/.ansible.cfg
  • /etc/ansible/ansible.cfg

También hay otra forma de generar archivo de registro.

Antes de ejecutar ansible-playbook ejecute los siguientes comandos para habilitar el registro:

  • Especifique la ubicación del archivo de registro.

    export ANSIBLE_LOG_PATH = ~ / ansible.log

  • Habilitar depuración

    exportar ANSIBLE_DEBUG = True

  • Para verificar el archivo de registro generado.

    menos $ ANSIBLE_LOG_PATH