Cattura al volo l'output del modello


8

Devo eseguire un comando sul server di destinazione che accetta i dati solo tramite stdin. I dati che sto fornendo provengono da un file modello e contengono dati sensibili, quindi preferirei non averli nel file system nemmeno per un secondo.

Sto cercando di trovare un modo per afferrare l'output di un'attività modello in modo da poterlo passare al comando. Qualcosa di simile a:

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

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

È un modo migliore per risolvere questo problema che non comporta la scrittura di un file temporaneo, l'invio al comando e la sua cancellazione?


L'ho fatto una volta come hai descritto, con un file temporaneo. Richiesta di funzione creata per ragazzi sensibili
Selivanov Pavel

Risposte:


6

Ho ricevuto una risposta da ragazzi responsabili:

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

1
Grande! Se stai utilizzando "with_items" con la tua attività, puoi utilizzare la variabile "item" nel modello.
Ikrom,

2

Il modo corretto di gestire i comandi che richiedono input stdinè il modulo prevede .

Il modo corretto di trattare i dati sensibili con Ansible è Ansible Vault . In un modo o nell'altro i dati rimarranno non crittografati sul file system mentre Ansible crea script Python per eseguire i comandi definiti nelle attività.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.