Ich muss einen Befehl auf dem Zielserver ausführen, der Daten nur über stdin akzeptiert. Die Daten, die ich füttere, stammen aus einer Vorlagendatei und enthalten vertrauliche Daten. Daher möchte ich sie nicht einmal für eine Sekunde im Dateisystem haben.
Ich versuche einen Weg zu finden, um die Ausgabe einer Vorlagenaufgabe abzurufen, damit ich sie an den Befehl übergeben kann. 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 }}"
Ist dies ein besserer Weg, bei dem keine temporäre Datei geschrieben, dem Befehl zugeführt und dann gelöscht wird?
Antworten:
Antwort von ansible Jungs bekommen:
quelle
Die richtige Art, Befehle zu verarbeiten, von denen Eingaben benötigt werden,
stdin
ist das Expect- Modul.Der richtige Umgang mit vertraulichen Daten mit Ansible ist ansible vault . Auf die eine oder andere Weise bleiben die Daten unverschlüsselt im Dateisystem, während Ansible Python-Skripte erstellt, um die unter Aufgaben definierten Befehle auszuführen.
quelle