ryandaniels.server_update_reboot

ansible-role-server-update-reboot

Rola Ansible do aktualizacji serwera do najnowszych pakietów, restartu serwera oraz oczekiwania na jego uruchomienie. Po tej roli można dodać kolejne role, aby kontynuować instalację lub konfigurację serwera.
Można również wykluczyć pakiety z aktualizacji, zaktualizować tylko określone pakiety lub zainstalować określone pakiety.
Działa z RedHat/CentOS i Ubuntu.

Może być używana do aktualizacji pakietów w celu łatania Meltdown/Spectre dla RedHat/CentOS 7 i Ubuntu 16.04

Bardziej szczegółowy przykład można znaleźć w wpisie na blogu: Używanie Ansible do aktualizacji Ubuntu, CentOS i RedHat

Wymaga: Ansible 2.7.1 (używa modułu reboot, a wersja 2.7.1 naprawia reboot_timeout)

Uwaga:
Ta rola może zrestartować serwer, jeśli wystąpi aktualizacja jądra i jeśli zmienna restartowa jest ustawiona na true (restart jest domyślnym ustawieniem).

Testowane dystrybucje

  • Ubuntu 18.04 / 16.04
  • CentOS & RHEL 7.x

Zmienne grupowe

./group_vars/centos-dev/proxy.yml
Z proxy:

proxy_env:
  http_proxy: http://my.internal.proxy:80
  https_proxy: https://my.internal.proxy:80

Bez proxy:

proxy_env: []

Ustawienia domyślne

  • debug_enabled_default: true|false (domyślne false)
  • update_default: true|false (domyślne true)
  • reboot_default: true|false (domyślne true)
  • server_update_reboot_pre_delay: Czas (w sekundach) na poczekanie przed rozpoczęciem zadań w tej roli
  • server_update_reboot_pre_reboot_delay: Czas (w sekundach) na poczekanie przed restartem
  • server_update_reboot_post_reboot_delay: Czas (w sekundach) na poczekanie po restarcie
  • server_update_reboot_reboot_timeout: Maksymalny czas (w sekundach) na oczekiwanie na restart serwera

Zmienne dla RHEL/CentOS:

  • server_update_yum_exclude_pkgs: ciąg oddzielony przecinkami pakietów do wykluczenia z aktualizacji. Można używać symboli wieloznacznych. (domyślne [])
  • server_update_yum_install_pkgs: ciąg oddzielony przecinkami pakietów, które będą TYLKO aktualizowane. Można używać symboli wieloznacznych. (domyślne '*' oznaczające wszystkie pakiety)

Zmienne dla Ubuntu:

  • server_update_apt_exclude_default: true|false. Ustaw na true, jeśli używasz poniższej listy wykluczeń (domyślne false)
  • server_update_apt_exclude_pkgs: Lista pakietów, które nie będą aktualizowane (każdy w osobnej linii). Można używać symboli wieloznacznych (ale użyj ^ na początku dopasowania, aby nie dopasować za dużo). (domyślne nieokreślone)
  • server_update_apt_default: full|update_specific|install (domyślne full)
    • full: aktualizuje wszystkie pakiety za pomocą "apt-get dist-upgrade"
    • update_specific: aktualizuje tylko z listy w zmiennej server_update_apt_install_pkgs
    • install: instaluje tylko z listy w zmiennej server_update_apt_install_pkgs
  • server_update_apt_install_pkgs: Lista pakietów do TYLKO aktualizacji lub instalacji (każdy w osobnej linii). Można używać symboli wieloznacznych. (domyślne nieokreślone)

Przykład playbooka server-update-reboot.yml

Poniższy przykład playbooka zaktualizuje/zrestartuje jeden serwer na raz (używając zmiennych max_fail_percentage i serial). Jeśli chcesz zaktualizować/zrestartować wszystko jednocześnie, odkomentuj te linie.

---
- hosts: '{{inventory}}'
  max_fail_percentage: 0
  serial: 1
  become: yes
  roles:
#  - stop-applications
  - server-update-reboot
#  - server-config-xyz
#  - start-applications

Przygotowanie

  • zainstaluj ansible
  • utwórz klucze
  • ssh do klienta, aby dodać wpis do pliku known_hosts
  • skonfiguruj autoryzowane klucze klienta
  • uruchom komendy ansible

Użycie

Dla Redhat/CentOS/Ubuntu

Użyj wszystkich domyślnych ustawień, aby: zaktualizować, zrestartować serwer i poczekać na jego uruchomienie:

ansible-playbook server-update-reboot.yml --extra-vars "inventory=all-dev" -i hosts-dev

To samo, co powyżej, lecz bez restartu serwera:

ansible-playbook server-update-reboot.yml --extra-vars "inventory=all-dev reboot_default=false" -i hosts-dev

Dla Redhat/CentOS

Zaktualizuj wszystkie pakiety z wyjątkiem określonych pakietów (dla RHEL):

ansible-playbook server-update-reboot.yml --extra-vars 'inventory=centos-dev server_update_yum_exclude_pkgs="mysql*, bash, openssh*"' -i hosts-dev

Zaktualizuj (lub zainstaluj) tylko określone pakiety (dla 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

Dla Ubuntu

Zaktualizuj wszystkie pakiety z wyjątkiem określonych pakietów (dla 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

Zaktualizuj tylko określone pakiety (dla 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

Tylko zainstaluj określone pakiety (dla Ubuntu). Zachowaj ostrożność z symbolami wieloznacznymi:

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

Łatanie Spectre/Meltdown

Aby załatać Redhat/CentOS 7 i Ubuntu 16.04 dla Spectre i Meltdown (CVE-2017-5754, CVE-2017-5753, CVE-2017-5715)
Informacje z Ubuntu
Informacje z Redhat

Lub po prostu załataj wszystko używając pierwszej komendy powyżej.

Dla Redhat/CentOS 7 (łatanie Spectre/Meltdown)

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

Dla Ubuntu 16.04 (łatanie Spectre/Meltdown)

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

Uwagi

RHEL5

RHEL/CentOS 5 ma zależność, którą należy zainstalować: python-simplejson
Ta komenda zainstaluje ją używając modułu raw:

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

Jeśli SELinux jest włączony w trybie permissive, potrzebna jest zależność: libselinux-python
Ta komenda zainstaluje ją używając modułu raw:

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
O projekcie

Role to update packages on linux and optionally reboot

Zainstaluj
ansible-galaxy install ryandaniels.server_update_reboot
Licencja
mit
Pobrania
15.9k
Właściciel
Ansible all the things