2014-10-16 8 views

Antwort

27

Die Option run_once wird jedes Mal ausgeführt, wenn Ihr Playbook/Aufgaben ausgeführt wird, aber nur einmal während des jeweiligen Laufs selbst ausgeführt wird. Jedes Mal, wenn Sie das Spiel ausführen, wird es ausgeführt, aber nur auf dem ersten Host in der Liste. Wenn Sie nach einer Möglichkeit suchen, diesen Befehl nur einmal auszuführen, müssen Sie das creates-Argument verwenden. Mit Ihrem Beispiel kann diese mithilfe des folgenden erreicht werden -

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

In diesem Fall wird die Datei /root/.aptupdated erstellt wird. Die Aufgabe wird jetzt prüfen, ob das vorhanden ist, und wenn dies der Fall ist, wird sie nicht ausgeführt.

Wenn die Aufgabe, die Sie ausführen möchten, das apt-get-Update ist, sollten Sie das native apt-Modul verwenden. Sie können dann so etwas tun -

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

Jetzt wird dies nur ausgeführt, wenn der Cache älter als einen Tag ist.

+1

ja - wenn es für "apt" ist, verwenden Sie das apt-Modul. 'Shell' und' Command' sind großartig, sollten aber in ihrer Verwendung viel eingeschränkter sein. – tedder42