2016-04-15 8 views
5

Per eseguire alcune operazioni localmente (non sulla macchina remota), ho bisogno di inserire il contenuto di una variabile ansible all'interno di un file temporaneo.Come si salva una variabile ansible in un file temporaneo che viene automaticamente rimosso al termine dell'esecuzione della playbook?

Si prega di notare che sto cercando una soluzione che si occupa di generare il file temporaneo in una posizione in cui può essere scritto (senza nomi hardcoded) e che si occupa anche della rimozione del file come non vogliamo lasciare le cose alle spalle.

risposta

1

Invece di farlo con un file, perché non solo use the environment? Questo può facilmente funzionare con la variabile e sarà vivo attraverso la sessione di ansible e puoi recuperarlo facilmente in qualsiasi passaggio o al di fuori di esso.

1

Anche se utilizzando l'ambiente di shell/applicazione è probabilmente, se si specificamente desidera utilizzare un file per memorizzare dati variabili si potrebbe fare qualcosa di simile

- hosts: server1 
    tasks: 
    - shell: cat /etc/file.txt 
    register: some_data 
    - local_action: copy dest=/tmp/foo.txt content="{{some_data.stdout}}" 

- hosts: localhost 
    tasks: 
    - set_fact: some_data="{{ lookup('file', '/tmp/foo.txt') }}" 
    - debug: var=some_data 

Per quanto riguarda il vostro requisito per dare al file un nome univoco e puliscilo alla fine del gioco. Lascio questa implementazione a te

+0

Mi trovo a usare i file temporanei parecchio perché devo chiamare le funzioni che accettano i file come argomenti. Devo scaricare i dati da una variabile o modello in un file temporaneo, usarlo e quindi riordinare. Ansible potrebbe davvero fare con una scorciatoia per quello. –

+0

Una scorciatoia potrebbe essere simile a 'with' di Python che crea una risorsa che viene automaticamente cancellata quando quell'ambito è scaduto. Un altro metodo che si applica solo quando il comando è un comando di shell consiste nell'utilizzare i file qui di bash: 'cat <(echo foo)' che crea un file temporaneo, scrive foo, quindi la funzione della riga di comando, qui cat, viene richiamata il percorso del file. Ma questo è solo per shell ed è un po 'come spingere il problema in una lingua che tratti i file temporanei come importanti e preziosi. –

Problemi correlati