In diesem Artikel beschreibe ich, wie Sie Ansible verwenden, um einen Linux- oder Windows-Computer effizient neu zu starten. Ansible reboot
-Modul wurde in Ansible 2.7 (2018) eingeführt, und jetzt ist dieses Modul Teil von ansible-base
und in allen Ansible-Installationen enthalten. Bitte beachten Sie den reboot
-Modul muss vom Ansible-Controller-Knoten ausgeführt werden und funktioniert nicht mit Knoten wie localhost.
Warum müssen Sie einen verwalteten Knoten neu starten?
Der Neustart eines Linux-Betriebssystems ist sehr selten. Meistens erreichen wir das gewünschte Ergebnis, indem wir nach Konfigurationsänderungen oder Paketaktualisierungen einzelne Dienste neu starten oder neu laden. Aber in einigen Fällen, wie z. B. beim Patchen oder System-Upgrade, ist ein Neustart erforderlich, um den vollständigen Arbeitsablauf und Effekt abzuschließen. Wenn Sie Ansible für die Verwaltung verwenden, müssen Sie diese Neustartaufgabe einbeziehen, um eine vollständige Automatisierung zu erreichen.
Automatisierte Neustarts sind in Ansible sehr einfach, da Sie mehrere Methoden haben, um einen Systemneustart durchzuführen.
Voraussetzungen
Stellen Sie den remote_user— sicher die Sie für Ansible verwenden, um sich beim verwalteten Knoten anzumelden – hat sudo
Zugriff und die Erlaubnis, den Knoten neu zu starten.
Die gute alte Methode – Neustartbefehl und warten
In der Vergangenheit haben wir einen verwalteten Knoten mit Ansible durch eine zweistufige Methode neu gestartet. (Es gibt viele Möglichkeiten, aber diese Methode ist gängige Praxis):
- Wir lösen einen Neustartbefehl über die
shell
aus Modul. - Wir werden einen
wait_for_connection
verwenden Modul, um zu prüfen, ob der Knoten nach einem Neustart wieder online geht.
Lassen Sie mich Ihnen ein Beispiel zeigen.
Die erste Aufgabe ist eine einfache shell
-Modul, um den Computer neu zu starten, und Ansible trennt die Verbindung zum Knoten. In der nächsten Aufgabe wartet Ansible darauf, dass der Knoten wieder online geht, jedoch mit einem Timeout von 300 Sekunden oder fünf Minuten.
- name: Reboot the machine
shell: "sleep 5 && reboot"
async: 1
poll: 0
- name: Wait for the machine to come back online
wait_for_connection:
connect_timeout: 60
sleep: 5
delay: 5
timeout: 300
Ziemlich einfach oder? Warte mal, es gibt mit Ansible reboot
eine bessere und effizientere Methode Modul, und Sie können das Ziel mit einer einzigen Aufgabe erreichen.
[ Vielleicht gefällt Ihnen auch die Lektüre: Introducing the new Ansible Automation Hub ]
Die neue und effiziente Methode – Neustart mit dem Ansible Reboot-Modul
Ansible reboot
-Modul wurde in Ansible 2.7 (2018) eingeführt, und jetzt ist dieses Modul Teil von ansible-base
und in allen Ansible-Installationen enthalten. Die Voraussetzungen sind die gleichen, aber Sie brauchen nur eine einfache Aufgabe mit einem reboot
Modul. Ansible reboot
Das Modul kümmert sich um den Neustart der Systeme oder verwalteten Knoten, wartet darauf, dass das System heruntergefahren wird, geht wieder online und reagiert auf Befehle.
Sie können den Computer einfach ohne zusätzliche Optionen neu starten.
- name: Reboot the machine with all defaults options
reboot:
Es gibt Optionen wie reboot_timeout für das Warten auf eine Zeitüberschreitung oder pre_reboot_delay , die bis zur angegebenen Anzahl von Sekunden warten, bevor sie neu gestartet werden. Weitere Informationen finden Sie in der Dokumentation zum Ansible Reboot-Modul.
Hier ist also unser Playbook mit einer Neustartaufgabe. Sie können sehen, dass es sehr einfach und leicht zu verwalten ist.
---
- name: Linux Reboot Demo
hosts: rhel7-base
gather_facts: no
remote_user: devops
become: true
tasks:
- name: Reboot the machine (Wait for 5 min)
reboot:
reboot_timeout: 300
Wichtige Hinweise
Wenn Ihr remote_user wird mit einem sudo
konfiguriert Passwort, stellen Sie sicher, dass Sie -K
hinzufügen Argument und geben Sie sudo
ein Passwort. Hier ist ein Beispiel:
$ ansible-playbook ansible-os-utils/linux-reboot.yaml -K
Wenn Sie Ansible Tower verwenden, fügen Sie sudo
hinzu Passwort in der Benutzeroberfläche für Anmeldeinformationen, wie hier gezeigt:
Lassen Sie uns das Playbook testen.
$ ansible-playbook ansible-os-utils/linux-reboot.yaml -K
BECOME password:
PLAY [Linux Reboot Demo] ************************************************************************************
TASK [Reboot the machine (Wait for 5 min)] ******************************************************************
changed: [rhel7-base.lab.local]
PLAY RECAP **************************************************************************************************
rhel7-base.lab.local : ok=1 changed=1 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0
Neustart eines Windows-Rechners
Was ist mit dem Neustart von Windows-Rechnern? Wie Sie wissen, können Sie Windows-Rechner mit Ansible verwalten, und diese Neustartaufgabe wird als Teil Ihres Automatisierungsworkflows benötigt.
Die gute Nachricht ist, dass es wie bei allen anderen Windows-Alternativen ein dediziertes Ansible win_reboot
gibt Modul für diese Aufgabe. So sieht die Einstellung aus:
- name: Reboot a Windows Machine
ansible.windows.win_reboot:
reboot_timeout: 360
Einzelheiten finden Sie in der Dokumentation zum Modul win_reboot von Ansible.
[ Ein kostenloser Leitfaden von Red Hat:5 Schritte zur Automatisierung Ihres Unternehmens. ]
Abschluss
Mit reboot
oder win_reboot
Modul in Ansible ist recht einfach, und das haben Sie bereits gelernt. Stellen Sie sicher, dass Sie in Ihrem Ansible-Playbook nach Bedarf die richtigen Aufgaben vor dem Neustart (Neustart nur bei Bedarf) und nach dem Neustart (zur Überprüfung des Dienstes oder der Konfiguration nach dem Neustart) haben.
Referenzen:
- Ansible-Neustart
- Ansible win_reboot