ryandaniels.server_update_reboot
ansible-role-server-update-reboot
Ansible-Rolle, um den Server auf die neuesten Pakete zu aktualisieren, den Server neu zu starten und auf die Wiederinbetriebnahme des Servers zu warten. Fügen Sie nach dieser Rolle weitere Rollen hinzu, um die Installation/konfiguration des Servers fortzusetzen.
Pakete können auch von der Aktualisierung ausgeschlossen werden, nur bestimmte Pakete aktualisiert oder bestimmte Pakete installiert werden.
Funktioniert mit Redhat/CentOS und Ubuntu.
Kann verwendet werden, um Pakete für Meltdown/Spectre-Minderung für Redhat/CentOS 7 und Ubuntu 16.04 zu aktualisieren.
Ein detaillierteres Beispiel finden Sie im Blogbeitrag: Ansible verwenden, um Ubuntu, CentOS und Redhat zu aktualisieren
Erfordert: Ansible 2.7.1 (verwendet das Modul reboot und 2.7.1 behebt reboot_timeout)
Hinweis:
Diese Rolle kann den Server neu starten, wenn ein Kernel-Update erfolgt und die Neustartvariable wahr ist (Neustart ist die Standardeinstellung).
Getestete Distributionen
- Ubuntu 18.04 / 16.04
- CentOS & RHEL 7.x
Gruppenvariablen
./group_vars/centos-dev/proxy.yml
Mit Proxy:
proxy_env:
http_proxy: http://my.internal.proxy:80
https_proxy: https://my.internal.proxy:80
Ohne Proxy:
proxy_env: []
Standardeinstellungen
- debug_enabled_default: true|false (Standard false)
- update_default: true|false (Standard true)
- reboot_default: true|false (Standard true)
- server_update_reboot_pre_delay: Zeit (in Sekunden), die gewartet werden soll, bevor Aufgaben in dieser Rolle ausgeführt werden
- server_update_reboot_pre_reboot_delay: Zeit (in Sekunden), die gewartet werden soll, bevor neu gestartet wird
- server_update_reboot_post_reboot_delay: Zeit (in Sekunden), die nach dem Neustart gewartet werden soll
- server_update_reboot_reboot_timeout: Maximale Zeit (in Sekunden), die auf den Neustart des Servers gewartet wird
Variablen für RHEL/CentOS:
- server_update_yum_exclude_pkgs: durch Kommas getrennte Liste von Paketen, die von der Aktualisierung ausgeschlossen werden sollen. Wildcards können verwendet werden. (Standard [])
- server_update_yum_install_pkgs: durch Kommas getrennte Liste von Paketen, die NUR aktualisiert werden sollen. Wildcards können verwendet werden. (Standard '*' bedeutet alle Pakete)
Variablen für Ubuntu:
- server_update_apt_exclude_default: true|false. auf true setzen, wenn die folgende Ausschlussliste verwendet wird (Standard false)
- server_update_apt_exclude_pkgs: Liste von Paketen, die nicht aktualisiert werden sollen (einzelne Zeilen). Kann Wildcards enthalten (verwenden Sie jedoch ^ am Anfang des Musters, um viele Übereinstimmungen zu vermeiden). (Standard undefiniert)
- server_update_apt_default: full|update_specific|install (Standard full)
- full: alle Pakete mit "apt-get dist-upgrade" aktualisieren
- update_specific: nur die aus der Variable server_update_apt_install_pkgs angegebene Liste aktualisieren
- install: nur die aus der Variable server_update_apt_install_pkgs angegebene Liste installieren
- server_update_apt_install_pkgs: Liste von Paketen, die NUR aktualisiert oder installiert werden sollen (einzelne Zeilen). Kann Wildcards enthalten, um mehrere Pakete zuzuordnen. (Standard undefiniert)
Beispiel-Playbook server-update-reboot.yml
Das folgende Beispiel-Playbook aktualisiert/startet einen Server gleichzeitig (unter Verwendung von max_fail_percentage und serial Variablen). Wenn Sie alles auf einmal aktualisieren/neustarten möchten, entfernen Sie die Kommentierung dieser Zeilen.
---
- hosts: '{{inventory}}'
max_fail_percentage: 0
serial: 1
become: yes
roles:
# - stop-applications
- server-update-reboot
# - server-config-xyz
# - start-applications
Vorbereitung
- Ansible installieren
- Schlüssel erstellen
- SSH zum Client, um einen Eintrag in die known_hosts-Datei hinzuzufügen
- Konfigurieren Sie die autorisierten Schlüssel des Client-Servers
- Ansible-Befehle ausführen
Verwendung
Für Redhat/CentOS/Ubuntu
Verwenden Sie alle Standardeinstellungen, um: zu aktualisieren, den Server neu zu starten und auf die Wiederinbetriebnahme des Servers zu warten:
ansible-playbook server-update-reboot.yml --extra-vars "inventory=all-dev" -i hosts-dev
Gleich wie oben, aber den Server nicht neu starten:
ansible-playbook server-update-reboot.yml --extra-vars "inventory=all-dev reboot_default=false" -i hosts-dev
Für Redhat/CentOS
Aktualisieren Sie alle Pakete, mit Ausnahme der angegebenen Pakete (für RHEL):
ansible-playbook server-update-reboot.yml --extra-vars 'inventory=centos-dev server_update_yum_exclude_pkgs="mysql*, bash, openssh*"' -i hosts-dev
Nur spezifische Pakete (einzelne Zeilen) aktualisieren (oder installieren) (für RHEL):
ansible-playbook server-update-reboot.yml --extra-vars "inventory=centos-dev server_update_yum_install_pkgs='kernel-*, iwl*firmware, microcode_ctl, dracut'" -i hosts-dev
Für Ubuntu
Aktualisieren Sie alle Pakete, mit Ausnahme der angegebenen Pakete (für Ubuntu):
ansible-playbook server-update-reboot.yml --extra-vars 'inventory=ubuntu-dev server_update_apt_exclude_default=true' --extra-vars '{"server_update_apt_exclude_pkgs": [bash, openssl, ^mysql*, ^openssh*]}' -i hosts-dev
Nur spezifische Pakete (einzelne Zeilen) aktualisieren (für Ubuntu):
ansible-playbook server-update-reboot.yml --extra-vars "inventory=ubuntu-dev server_update_apt_default=update_specific" --extra-vars "{'server_update_apt_install_pkgs': [linux-firmware, linux-generic, linux-headers-generic, linux-image-generic, intel-microcode, openssh*]}" -i hosts-dev
Nur spezifische Pakete (einzelne Zeilen) installieren (für Ubuntu). Seien Sie vorsichtig mit Wildcards:
ansible-playbook server-update-reboot.yml --extra-vars "inventory=ubuntu-dev server_update_apt_default=install" --extra-vars "{'server_update_apt_install_pkgs': [bash, openssh-server]}" -i hosts-dev
Spectre/Meltdown-Minderung
Um Redhat/CentOS 7 und Ubuntu 16.04 zu patchen, für Spectre und Meltdown (CVE-2017-5754, CVE-2017-5753, CVE-2017-5715)
Info von Ubuntu
Info von Redhat
Oder patchen Sie einfach alles mit dem ersten Befehl oben.
Für Redhat/CentOS 7 (Spectre/Meltdown-Minderung)
ansible-playbook server-update-reboot.yml --extra-vars "inventory=centos-dev server_update_yum_install_pkgs='kernel-*, iwl*firmware, microcode_ctl, dracut'" -i hosts-dev
Für Ubuntu 16.04 (Spectre/Meltdown-Minderung)
ansible-playbook server-update-reboot.yml --extra-vars "inventory=ubuntu-dev server_update_apt_default=update_specific" --extra-vars "{'server_update_apt_install_pkgs': [linux-firmware, linux-generic, linux-headers-generic, linux-image-generic, intel-microcode]}" -i hosts-dev
Hinweise
RHEL5
RHEL/CentOS 5 hat eine Abhängigkeit, die installiert werden muss: python-simplejson
Dieser Befehl verwendet das raw-Modul, um es zu installieren:
ansible centos5 -m raw -a "yum install -y python-simplejson" --become --ask-pass --become-method=su --ask-become-pass --extra-vars="ansible_ssh_user=username123" -i hosts-dev
SELinux
Wenn SELinux aktiviert/permissiv ist, wird eine Abhängigkeit benötigt: libselinux-python
Dieser Befehl verwendet das raw-Modul, um es zu installieren:
ansible centos5 -m raw -a "yum install -y libselinux-python" --become --ask-pass --become-method=su --ask-become-pass --extra-vars="ansible_ssh_user=username123" -i hosts-dev
ansible-galaxy install ryandaniels.server_update_reboot