Si encuentras algún detalle que no comprendes puedes dejarlo en la sección de comentarios y haremos todo lo posible de ayudarte rápidamente.
Solución:
Gracias a tmoschou por agregar este comentario a una respuesta aceptada obsoleta:
As of Ansible 2.10, The documentation for ansible.builtin.copy says:
If you need variable interpolation in copied files, use the
ansible.builtin.template module. Using a variable in the content field will
result in unpredictable output.
Para más detalles ver esto y una explicación
Respuesta original:
Puedes usar el copy
módulo, con el parámetro content=
.
Di exactamente la misma respuesta aquí: Escribir variable en 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 el local_action
notación:
- local_action: copy content= foo_result dest=/path/to/destination/file
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"
Una acción local se ejecutará una vez para cada host remoto (en paralelo). Si desea un archivo único por host, asegúrese de incluir nombre_host_inventario 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 agregar al archivo con un módulo (lineinfile es capaz, o podría canalizar con un shell dominio)
- 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 contra 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 Plantilla Módulo Docs
Acuérdate de que tienes la capacidad de añadir una evaluación verdadera si te fue preciso.