GNU/Linux >> LINUX-Kenntnisse >  >> Linux

So automatisieren Sie Systemneustarts mit dem Ansible-Neustartmodul

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):

  1. Wir lösen einen Neustartbefehl über die shell aus Modul.
  2. 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

Linux
  1. So erstellen Sie einen Linux-Benutzer mit Ansible

  2. So aktualisieren/aktualisieren Sie Debian/Ubuntu Linux mit Ansible

  3. So überprüfen Sie, ob das System einen Neustart erfordert

  4. So starten Sie Linux über die Befehlszeile neu

  5. Planen Sie Neustarts im Ubuntu-Betriebssystem

So finden Sie heraus, wer das Linux-System wann neu gestartet hat

So starten Sie CentOS 8 neu

So automatisieren Sie die Podman-Installation und -Bereitstellung mit Ansible

So starten Sie Debian über die Befehlszeile neu

So verwalten Sie die Systemprotokolle mit Webmin

So verwenden Sie den fd-Befehl auf einem Linux-System