In einem Ansible-Playbook möchte ich einen Dienst nach dem Aktualisieren der Konfigurationsdatei neu starten, jedoch nur, wenn er bereits ausgeführt wurde .
Ich möchte den Status des Dienstes nicht mit ansible steuern, sondern nur neu starten, wenn er zuvor gestartet wurde.
Ich könnte dafür einen benutzerdefinierten Befehl verwenden, der jedoch nicht auf verschiedene Service-Management-Systeme (upstart / systemd / sysvinit / openrc ...) portierbar ist, wie es das Servicemodul von ansible ist.
Vielen Dank für alle Tipps.
service
kann das Modul das nicht. Sie können dies erreichen, indem Sie überprüfen, ob der gewünschte Prozess mitshell
/command
Ausführung von ps vorhanden ist, oder indem Sie prüfen, ob eine run / pid-Datei vorhanden ist.service
Modul schauen und vielleicht ein Update vorschlagen oder sogar einen Patch einreichen.Das Ansible-
service:
Modul bietet keinen Mechanismus zum Überprüfen, ob ein Dienst bereits ausgeführt wird oder nicht. Daher müssen Sie über dasshell:
Modul auf so etwas zurückgreifen, um zunächst festzustellen, ob der Dienst ausgeführt wird.Beispiel
Hier erkenne ich, ob WebSphere oder Tomcat8 ausgeführt werden, und starte den entsprechenden Dienst basierend auf seinem Status neu.
Um den Neustart nur aufzurufen, wenn eine bestimmte Datei aktualisiert wurde, können Sie a
register:
für Ihrecopy:
odertemplate:
Aufgaben verwenden, um den Status zu speichern, ob die Datei aktualisiert wurde. Die Ergebnisse davonregister:
können dann als Teilwhen:
derservice: name=XXXX state=restarted
Aufgabe übernommen werden.quelle