Erfassen Sie die Vorlagenausgabe im Handumdrehen

Erfassen Sie die Vorlagenausgabe im Handumdrehen

Ich muss auf dem Zielserver einen Befehl ausführen, der Daten nur über stdin akzeptiert. Die Daten, die ich ihm zuführe, stammen aus einer Vorlagendatei und enthalten vertrauliche Daten, daher möchte ich sie nicht eine Sekunde lang im Dateisystem haben.

Ich versuche, einen Weg zu finden, die Ausgabe einer Vorlagenaufgabe abzurufen, damit ich sie an den Befehl übergeben kann. So etwas wie:

- name: generate data
  template:
    src: data.j2
    dest: [I'd rather not have any files written]
  register: myvar

- name: run command
  shell: "command < {{ myvar }}"

Gibt es hierfür eine bessere Möglichkeit, bei der es nicht darum geht, eine temporäre Datei zu schreiben, sie dem Befehl zuzuführen und sie dann zu löschen?

Antwort1

Habe die Antwort von den Ansible-Leuten bekommen:

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

Antwort2

Die richtige Art und Weise, Befehle zu handhaben, die eine Eingabe erfordern, stdinist dieerwartenModul.

Der richtige Umgang mit sensiblen Daten mit Ansible istAnsible-Tresor. Auf die eine oder andere Weise bleiben die Daten unverschlüsselt im Dateisystem, während Ansible Python-Skripte erstellt, um die unter den Aufgaben definierten Befehle auszuführen.

Antwort3

Wenn wir einige frühere Antworten kombinieren, erhalten wir:

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

verwandte Informationen