J'ai besoin d'exécuter une commande sur le serveur cible qui accepte les données via stdin uniquement. Les données que je fournis proviennent d'un fichier de modèle et contiennent des données sensibles, donc je préfère ne pas les avoir dans le système de fichiers, même pendant une seconde.
J'essaie de trouver un moyen de récupérer la sortie d'une tâche de modèle afin de pouvoir la transmettre à la commande. Quelque chose comme:
- name: generate data
template:
src: data.j2
dest: [I'd rather not have any files written]
register: myvar
- name: run command
shell: "command < {{ myvar }}"
Est-ce une meilleure façon de procéder qui n'implique pas d'écrire un fichier temporaire, de le nourrir à la commande puis de l'effacer?
Réponses:
Vous avez la réponse de gars ansible:
la source
Le bon moyen de gérer les commandes qui nécessitent une entrée
stdin
est le module expect .La manière appropriée de traiter les données sensibles avec Ansible est le coffre-fort ansible . D'une manière ou d'une autre, les données resteront non chiffrées sur le système de fichiers car Ansible crée des scripts Python pour exécuter les commandes définies sous les tâches.
la source