2014-10-16 12 views

risposta

27

L'opzione run_once verrà eseguita ogni volta che si esegue il Playbook/attività, ma verrà eseguito solo una volta durante l'esecuzione specifica stessa. Quindi, ogni volta che esegui il gioco, verrà eseguito, ma solo sul primo host nell'elenco. Se stai cercando un modo per eseguire solo quel comando una volta, punto, dovrai usare l'argomento crea. Usando il tuo esempio, questo può essere realizzato utilizzando la seguente -

- name: apt update 
    shell: apt-get update && touch /root/.aptupdated 
    args: 
    creates: /root/.aptupdated 

In questo caso il file /root/.aptupdated creato. L'attività controllerà ora se esiste, e se lo fa non verrà eseguito.

Su una nota correlata se l'attività che si sta tentando di eseguire è l'aggiornamento apt-get, è possibile che si desideri utilizzare il modulo apt nativo. È quindi possibile fare qualcosa di simile -

- name: apt update 
    apt: update_cache=yes cache_valid_time=86400 

Ora questo verrà eseguito solo se la cache è più vecchia di un giorno.

+1

sì- se è per 'apt', utilizzare il modulo apt. 'shell' e' command' sono fantastici ma dovrebbero essere molto più limitati nel loro uso. – tedder42