thorian93.upgrade

Rola Ansible: Uaktualnienie


Nieaktualizowane! Przeniesione do kolekcji!

Ta rola została przeniesiona do mojej głównej kolekcji.
Nie jest już utrzymywana tutaj!
Odwiedź kolekcję dla aktualnych treści.


Ta rola wykonuje aktualizacje na serwerach Debian/Ubuntu, RHEL/CentOS, Fedora i Suse.

Cechy

  • Wykrywanie ponownego uruchomienia i automatyczne ponowne uruchamianie
  • Wykrywanie ponownego uruchomienia usług i automatyczne ponowne uruchamianie usług
  • Raportowanie aktualizacji
    • przez e-mail
    • przez Telegram

Uwaga!

Sprawdzanie ponownego uruchomienia i ponownego uruchamiania usług dla APT jest realizowane za pomocą needrestart. Dla Fedory realizowane jest przez wtyczkę dnf needs-restarting. Dla RHEL/CentOS używany jest narzędzie needs-restarting.

Rola używa wyników lub kodów zwracanych, aby zdecydować, jakie działania podjąć. Możesz skonfigurować zachowanie za pomocą zmiennych poniżej.

Żadne z tych metod nie są idealne, ale działają stosunkowo dobrze. Warto przyjrzeć się roli przed jej użyciem.

Znane problemy

  • Debian 11: Bez ustawienia ansible_python_interpreter=/usr/bin/python3, moduł apt spróbuje zainstalować python-apt w locie, co się nie uda. Zobacz ten problem po więcej szczegółów.
  • CentOS 8: Wykrywanie ponownego uruchomienia nie działa, ponieważ brakuje flagi dla wtyczki dnf needs-restarting. Żadne ponowne uruchomienie nie będzie miało miejsca.
  • Fedora 32 i wcześniejsze: Wykrywanie ponownego uruchamiania usług nie działa, ponieważ brakuje flagi dla wtyczki dnf needs-restarting. Żadne ponowne uruchomienia usług nie będą miały miejsca.
  • opensuse 15 i 42: Brak zależności uniemożliwia zainstalowanie narzędzia zależnego. Istnieje obejście. Proces aktualizacji wydaje się niestabilny. Mimo to wymienię te dystrybucje jako stabilne w kontekście poniżej wymienionego sprawdzenia zgodności z systemem operacyjnym, ponieważ aktualnie rola nie wydaje się łamać niczego, ale proszę zachować ostrożność! Również śmiało daj mi znać, jeśli wiesz, jak to naprawić.
  • opensuse 15 i 42: Wykrywanie ponownego uruchamiania usług stosuje podejście 'brute force', ponieważ wyjście z zypper ps -s jest trudne do sparsowania. Na razie te systemy operacyjne po prostu się ponownie uruchomią, jeśli jakieś usługi będą wymagać ponownego uruchomienia.

Wymagania

Przy użyciu funkcji raportowania przez Telegram:

collections:
- name: community.general
  version: 3.4.0

Zauważ, że ta rola wymaga dostępu root, więc uruchom ją w playbooku z globalnym become: yes lub wywołaj rolę w swoim playbooku w ten sposób:

- hosts: foobar
  roles:
    - role: thorian93.upgrade
      become: yes

Rola ta jedynie sprawdza, czy system jest dostępny na porcie 22 po ponownym uruchomieniu. Jeśli potrzebujesz dalszych kontroli lub walidacji, musisz zająć się tym samodzielnie.

Zmienne Roli

Dostępne zmienne są wymienione poniżej, wraz z wartościami domyślnymi (zobacz defaults/main.yml):

Podstawowe zmienne

upgrade_packages_on_hold: []

Ustaw pakiety, których nie chcesz automatycznie zaktualizować.

upgrade_unattended_reboot: true

Włącz automatyczne ponowne uruchamianie, jeśli będzie to konieczne po aktualizacjach. Domyślnie jest true, ustaw false, aby wyłączyć ponowne uruchamianie.

upgrade_force_reboot: false

Wymuś ponowne uruchomienie każdego serwera niezależnie od wyniku sprawdzenia ponownego uruchomienia. Domyślnie to false, ustaw true, aby włączyć wymuszone ponowne uruchomienia.

upgrade_needrestart_disable_interaction: true

Narzędzie needrestart jest używane do określenia konieczności ponownego uruchomienia i ponownego uruchomienia usług. Niektóre dystrybucje konfiguruje się, aby działały interaktywnie domyślnie, co łamie tę rolę. Dlatego domyślne ustawienie to wyłączenie wszelkiej interakcji. Ustaw to na false, aby włączyć interakcję.

upgrade_restart_services: true

Włącz automatyczne ponowne uruchamianie usług. To spowoduje, że rola zrestartuje usługi, które wymagają ponownego uruchomienia. Domyślnie jest true, ustaw false, aby wyłączyć ponowne uruchamianie.

upgrade_restart_services_blacklist:
  - auditd.service
  - dbus.service
  - systemd-manager.service

Czarna lista usług, które nie powinny lub nie mogą być ponownie uruchamiane. Domyślna lista jest oparta na doświadczeniach. Śmiało zgłaszaj usługi, które należy dodać.

Zmienne Raportowania

upgrade_reporting_enable: false

Włącz funkcję raportowania tej roli, aby wyświetlić zainstalowane aktualizacje i opcjonalnie zapisać je do pliku.

upgrade_reporting_path: "."

Zdefiniuj, gdzie powinny być umieszczane raporty. Domyślnie jest to twoja bieżąca ścieżka robocza.

upgrade_reporting_cleanup: true

Wyczyść pliki raportów używanych do wysyłania raportów. Może być przydatne, aby je zachować na potrzeby debugowania.

Zmienne Raportowania przez Telegram

upgrade_reporting_telegram_enable: false

Włącz raportowanie przez Telegram. Musisz skonfigurować następujące dwie zmienne ze swoimi danymi uwierzytelniającymi, aby faktycznie wysyłać wiadomości przez Telegram! Zobacz dokumentację modułu po szczegóły.

upgrade_telegram_token:  []

Twój token bota Telegram.

upgrade_telegram_chatid: []

Twój identyfikator czatu Telegram.

Zmienne Raportowania przez E-mail

upgrade_reporting_mail_enable: false

Włącz raportowanie przez e-mail.

upgrade_reporting_mail_subject: "Raport Aktualizacji Roli Ansible"

Skonfiguruj temat e-maila.

upgrade_reporting_mail_to: ""

Zdefiniuj odbiorcę(e) e-maila.

upgrade_reporting_mail_from: ""

Zdefiniuj nadawcę e-maila.

upgrade_reporting_mail_host: ""

Zdefiniuj serwer lub relay e-mailowy.

upgrade_reporting_mail_port: ""

Zdefiniuj port serwera e-mailowego.

upgrade_reporting_mail_user:
upgrade_reporting_mail_password:

Jeśli serwer e-mailowy wymaga uwierzytelnienia, ustaw nazwę użytkownika i hasło tutaj. Jeśli nie jest wymagane uwierzytelnienie, upewnij się, że zostawiasz zmienne puste, jak tutaj! Nie ustawiaj ich na puste, jak pokazano powyżej.

upgrade_reporting_mail_run_once: true

Jeśli chcesz wysłać jeden e-mail na każdą sesję, ustaw to na true. Jeśli wolisz wysłać jeden e-mail na serwer, ustaw na false.

Zależności

Brak.

Zgodność z systemem operacyjnym

Ta rola zapewnia, że nie jest używana przeciwko nieobsługiwanym lub nieprzetestowanym systemom operacyjnym, sprawdzając, czy odpowiednia nazwa dystrybucji i numer wersji głównej są obecne w dedykowanej zmiennej o nazwie podobnej do <role-name>_stable_os. Możesz znaleźć tę zmienną w domyślnym pliku zmiennych roli w defaults/main.yml:

role_stable_os:
  - Debian 10
  - Ubuntu 18
  - CentOS 7
  - Fedora 30

Jeśli kombinacja dystrybucji i numeru głównej wersji nie pasuje do docelowego systemu, rola zakończy działanie. Aby umożliwić działanie roli, dodaj nazwę dystrybucji i nazwę wersji głównej do tej zmiennej, a wszystko będzie działać. Ale przetestuj nową kombinację najpierw!

Podziękowania dla HarryHarcourt za ten pomysł!

Przykład Playbooka

---
- name: "Uruchom rolę."
  hosts: all
  become: yes
  roles:
    - ansible-role-upgrade

Wkład

Śmiało zgłaszaj wszelkie błędy, problemy lub sugestie dotyczące ulepszeń. Możesz także skontaktować się ze mną w każdej chwili, jeśli chcesz zapytać lub przedyskutować coś.

Zastrzeżenie

Ta rola jest dostarczana w takim stanie, w jakim jest, i nie mogę ani nie będę gwarantować, że działa zgodnie z zamierzeniem, ani też nie mogę być odpowiedzialny za jakiekolwiek uszkodzenia lub niewłaściwe konfiguracje spowodowane przez tę rolę. Dokładnie zapoznaj się z rolą przed jej użyciem.

Licencja

MIT

Informacje o autorze

Ta rola została stworzona w 2019 roku przez Thorian93.

Zainstaluj
ansible-galaxy install thorian93.upgrade
Licencja
mit
Pobrania
2k
Właściciel
Greetings earthlings! I am a young Linux, IT and tech enthusiast and currently I am working as a checkmk consultant for Checkmk.