Ansible handler wird ausgeführt, nur wenn geändert: true
Installation von ntp mit Ansible,
Ich notify-handler, um zu starten ntpd-Dienst wie folgt:
Aufgabe:
---
# roles/common/tasks/ntp.yml
- name: ntp | installing
yum: name=ntp state=latest
notify: start ntp
Handler:
---
# roles/common/handlers/main.yml
- name: start ntp
service: name=ntpd state=started
Wenn der service nicht installiert ist, ansible installiert und startet es.
Wenn der Dienst bereits installiert, aber nicht ausgeführt wird, ist es nicht bekannt handler:
status der Aufgabe ist changed: false
Das bedeutet, ich kann es starten, wenn es wurde schon vorgestellt OS.
Ist es eine gute Praxis, die hilft, um sicher zu sein, dass der Dienst installiert wurde und ist in fahrbereitem Zustand?
PS: vielleicht mache ich so:
---
# roles/common/tasks/ntp.yml
- name: ntp | installing
yum: name=ntp state=latest
notify: start ntp
changed: true
aber ich bin nicht sicher, ob es ist gute Praxis.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Aus der Intro zu Playbooks guide:
Handler laufen nur auf den Wechsel von design. Wenn Sie ändern eine Konfiguration, die Sie oft brauchen, um einen service neu starten, aber nicht wollen, wenn sich nichts geändert hat.
Was Sie wollen, ist um einen Dienst zu starten, wenn es nicht bereits ausgeführt wird. Um dies zu tun, sollten Sie eine regelmäßige Aufgabe, wie beschrieben von @udondan :
Ansible ist idempotent von design, so dass diese zweite Aufgabe wird nur ausgeführt, wenn ntp nicht bereits ausgeführt wird. Die
enabled
Linie setzen wird, den Dienst zu starten beim Booten. Entfernen Sie diese Zeile, wenn das nicht gewünschte Verhalten.Warum nicht fügen Sie einfach eine service-Aufgabe dann? Einen handler in der Regel wird für den Neustart eines Dienstes nachdem die Konfiguration geändert hat. Um sicherzustellen, ein Dienst ausgeführt wird, egal, was, fügen Sie einfach bei der Aufgabe so: