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.
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