vars - Ansible-Guardar variable registrada al archivo
ansible variables (4)
¿Cómo puedo guardar una variable registrada en un archivo? Tomé esto del tutorial :
- hosts: web_servers
tasks:
- shell: /usr/bin/foo
register: foo_result
ignore_errors: True
- shell: /usr/bin/bar
when: foo_result.rc == 5
¿Cómo foo_result
variable foo_result
en un archivo, por ejemplo, foo_result.log
usando ansible?
Estoy usando Ansible 1.9.4 y esto es lo que funcionó para mí:
- local_action: copy content="{{ foo_result.stdout }}" dest="/path/to/destination/file"
Puede utilizar el módulo de copy
, con el parámetro content=
.
Di la misma respuesta exacta aquí: Escribir variable a un archivo en Ansible
En su caso, parece que desea que esta variable se escriba en un archivo de registro local, por lo que podría combinarla con la notación local_action
:
- local_action: copy content={{ foo_result }} dest=/path/to/destination/file
Una acción local se ejecutará una vez para cada host remoto (en paralelo). Si desea un archivo único por host, asegúrese de poner el inventario nombre de host como parte del nombre del archivo.
- local_action: copy content={{ foo_result }} dest=/path/to/destination/{{ inventory_hostname }}file
Si, en cambio, desea un solo archivo con toda la información del host, una forma es tener una tarea en serie (no desea agregar en paralelo) y luego adjuntar al archivo con un módulo (el archivo de línea es capaz o puede canalizarse con un shell mando)
- hosts: web_servers
serial: 1
tasks:
- local_action: lineinfile line={{ foo_result }} path=/path/to/destination/file
Alternativamente, puede agregar un segundo juego / rol / tarea al libro de jugadas que se ejecuta solo en el host local. Luego acceda a la variable desde cada uno de los hosts donde se ejecutó el comando de registro dentro de una plantilla Acceda a Otros hosts Variables Docs Docs Template Module Docs
---
- hosts: all
tasks:
- name: Gather Version
debug:
msg: "The server Operating system is {{ ansible_distribution }} {{ ansible_distribution_major_version }}"
- name: Write Version
local_action: shell echo "This is {{ ansible_distribution }} {{ ansible_distribution_major_version }}" >> /tmp/output