Capture la salida de la plantilla sobre la marcha

Capture la salida de la plantilla sobre la marcha

Necesito ejecutar un comando en el servidor de destino que acepte datos solo a través de la entrada estándar. Los datos que le estoy proporcionando 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 pasarlo 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 hacerlo que no implique escribir un archivo temporal, enviarlo al comando y luego borrarlo?

Respuesta1

Obtuve respuesta de chicos ansibles:

some_var: "{{ lookup('template', 'tmpl.j2') }}"

Respuesta2

La forma adecuada de manejar los comandos que necesitan información stdines laesperarmódulo.

La forma adecuada de tratar datos confidenciales con Ansible esbóveda ansible. De una forma u otra, los datos permanecerán sin cifrar en el sistema de archivos, ya que Ansible crea scripts de Python para ejecutar los comandos definidos en las tareas.

Respuesta3

Combinando un par de respuestas anteriores aquí, obtenemos:

- name: run command
  command: "command"
  args:
    stdin: "{{ lookup('template', 'tmpl.j2') }}"

información relacionada