Necesito ejecutar un comando en el servidor de destino que acepte datos solo a través de stdin. Los datos que estoy suministrando provienen de un archivo de plantilla y contienen datos confidenciales, por lo que prefiero no tenerlos en el sistema de archivos ni siquiera por un segundo.
Estoy tratando de encontrar una manera de obtener el resultado de una tarea de plantilla para poder pasarla al comando. Algo como:
- name: generate data
template:
src: data.j2
dest: [I'd rather not have any files written]
register: myvar
- name: run command
shell: "command < {{ myvar }}"
¿Es una mejor manera de hacer esto que no implica escribir un archivo temporal, alimentarlo al comando y luego borrarlo?
Respuestas:
Recibí respuesta de chicos ansibles:
fuente
La forma correcta de manejar los comandos que necesitan entrada
stdin
es desde el módulo de espera .La forma correcta de tratar datos sensibles con Ansible es la bóveda ansible . De una forma u otra, los datos se ubicarán sin cifrar en el sistema de archivos, ya que Ansible crea scripts de Python para ejecutar los comandos definidos en las tareas.
fuente