vault vars template playbook password ansible ansible-playbook

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