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.
Upgrade Management for Linux
ansible-galaxy install thorian93.upgrade