Handler definieren und Neustartmuster
Schreiben Sie wiederverwendbare Handler zum Neustarten von Services.
Handler definieren und Neustartmuster ist eine kostenlose Ansible Academy-Lektion auf CoddyKit. Dies ist Lektion 2 von 4. Du kannst die komplette Lektion unten kostenlos lesen – dann übst du sie direkt im Browser mit einem integrierten Code-Editor und einem KI-Tutor rund um die Uhr. Sie ist Teil des Ansible Academy-Lernpfads, und dein Fortschritt wird über Web und CoddyKit-App synchronisiert. Der Ansible Academy-Kurs umfasst insgesamt 4 Lektionen.
Wo Handler definiert werden
Handler gehören in einen eigenen Abschnitt handlers eines Plays, getrennt von Ihren normalen Tasks. Dadurch sind reaktive Aktionen übersichtlich zusammengefasst.
tasks:
- name: Deploy config
ansible.builtin.template:
src: app.conf.j2
dest: /etc/app.conf
notify: Restart app
handlers:
- name: Restart app
ansible.builtin.service:
name: app
state: restartedEin Handler ist eine Task
Ein Handler verwendet exakt dieselbe Syntax wie eine Task: einen Namen und einen Modulaufruf. Der einzige Unterschied besteht darin, dass er auf eine Benachrichtigung wartet.
Der Name ist der Vertrag
Der Name des Handlers ist die Zeichenfolge, auf die andere Tasks in ihrem notify verweisen. Betrachten Sie ihn als stabiles, exaktes Label, das Sie wiederverwenden.
Neustart mit service
Ein klassischer Neustart-Handler verwendet das service-Modul mit dem auf restarted gesetzten Status. Er stoppt und startet die Unit in einem Schritt.
- name: Restart nginx
ansible.builtin.service:
name: nginx
state: restartedNeuladen oder Neustarten
Bevorzugen Sie reloaded, wenn ein Dienst dies unterstützt. Beim Neuladen wird die Konfiguration erneut eingelesen, ohne Verbindungen zu unterbrechen, anders als bei einem vollständigen Neustart.
- name: Reload nginx
ansible.builtin.service:
name: nginx
state: reloadedsystemd direkt verwenden
Das systemd-Modul bietet auf systemd-Hosts eine feinere Steuerung, einschließlich daemon_reload, nachdem Sie eine Unit-Datei geändert haben.
- name: Restart app
ansible.builtin.systemd:
name: app
state: restarted
daemon_reload: trueHandler allgemein halten
Schreiben Sie einen wiederverwendbaren Handler nginx neu starten und benachrichtigen Sie ihn aus mehreren Tasks. Vermeiden Sie es, dieselbe Neustartlogik überall zu kopieren.
Handler werden in Definitionsreihenfolge ausgeführt
Wenn mehrere Handler vorgemerkt sind, werden sie in der Reihenfolge ausgeführt, in der sie definiert wurden, nicht in der Reihenfolge ihrer Benachrichtigung. Planen Sie diese Reihenfolge entsprechend.
Die Reihenfolge ist bei Abhängigkeiten wichtig
Wenn ein Neuladen vor einem Neustart erfolgen muss, definieren Sie beide in dieser Reihenfolge in der Handler-Liste, damit die Warteschlange korrekt abgearbeitet wird.
Handler in Rollen
In einer Rolle befinden sich Handler in handlers/main.yml. Tasks in der Rolle benachrichtigen sie namentlich, genau wie in einem einfachen Playbook.
Benennung für mehr Klarheit
Verwenden Sie aktionsorientierte Namen wie nginx neu starten oder sshd neu laden. Klare Namen machen die Ausgabe lesbar und notify-Zeilen verständlich.
Schnelltest
Sie haben eine Konfiguration geändert und möchten, dass der laufende Dienst sie übernimmt, ohne Verbindungen zu unterbrechen. Welcher Status ist am besten geeignet?
Zusammenfassung
Sie können nun Handler im Abschnitt handlers definieren, zwischen Neustart und Neuladen wählen und sich auf die Ausführung in Definitionsreihenfolge verlassen. 🎯
Häufig gestellte Fragen
Ist die Lektion „Handler definieren und Neustartmuster“ kostenlos?
Ja — der vollständige Text von „Handler definieren und Neustartmuster“ ist hier im Web kostenlos zu lesen. Um sie interaktiv zu üben (integrierter Code-Editor und 24/7 KI-Tutor) und den Rest des Ansible Academy-Kurses freizuschalten, upgrade auf CoddyKit PRO. Der Ansible Academy-Kurs umfasst insgesamt 4 Lektionen.
Was lerne ich in „Handler definieren und Neustartmuster“?
Schreiben Sie wiederverwendbare Handler zum Neustarten von Services. Du übst Ansible Academy mit praktischem Code, den du direkt im Browser ausführst, und ein 24/7 KI-Tutor beantwortet deine Fragen während du die Lektion bearbeitest.
Brauche ich Erfahrung, um Ansible Academy zu starten?
Keine Vorkenntnisse erforderlich. Ansible Academy auf CoddyKit ist für Anfänger bis fortgeschrittene Lernende strukturiert, sodass du hier starten oder von Anfang an beginnen und in deinem eigenen Tempo voranschreiten kannst. Dies ist Lektion 2 von 4.
Wie lange dauert die Lektion „Handler definieren und Neustartmuster“?
Die meisten CoddyKit-Lektionen dauern etwa 5–10 Minuten. Jede ist kompakt und interaktiv, sodass du stetig Fortschritte machst und genau dort weitermachst, wo du aufgehört hast – im Web und in der App.
Kann ich in dieser Ansible Academy-Lektion Code schreiben und ausführen?
Ja. Jede Ansible Academy-Lektion enthält einen integrierten Code-Editor, sodass du echten Code direkt in deinem Browser schreibst und ausführst und sofort KI-Feedback erhältst — ohne lokale Einrichtung erforderlich.
Alle Lektionen in diesem Kurs
- Bei Änderungen einen Handler benachrichtigen
- Handler definieren und Neustartmuster
- Wann Handler ausgeführt werden und flush_handlers
- Listen: Ein Trigger, mehrere Handler