Escribir variable en un archivo en Ansible


Estoy extrayendo JSON a través del módulo URI y quiero escribir el contenido recibido en un archivo. Soy capaz de obtener el contenido y enviarlo al depurador, por lo que sé que el contenido se ha recibido, pero no conozco las mejores prácticas para escribir archivos.

Author: Keith Adler, 2014-10-29

3 answers

Puedes usar el módulo copy, con el parámetro content:

- copy: content="{{ your_json_feed }}" dest=/path/to/destination/file

Los documentos aquí: copiar módulo

 131
Author: Ramon de la Fuente,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-01-25 20:01:22

A menos que esté escribiendo archivos muy pequeños, probablemente debería usar plantillas.

Ejemplo:

- name: copy upstart script
  template: 
    src: myCompany-service.conf.j2 
    dest: "/etc/init/myCompany-service.conf"
 5
Author: Janus Troelsen,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-05-22 17:06:27

Basado en la respuesta de Ramón me encuentro con un error. El problema donde los espacios en el JSON traté de escribir lo arreglé cambiando la tarea en el libro de jugadas para que se vea como:

- copy:
    content: "{{ your_json_feed }}"
    dest: "/path/to/destination/file"

A partir de ahora no estoy seguro de por qué se necesitaba esto. Mi mejor conjetura es que tenía algo que ver con cómo se reemplazan las variables en Ansible y se analiza el archivo resultante.

 3
Author: Tobias Kremer,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-01-15 08:09:38