racqspace.unattended_upgrades

Rola Ansible: unattended_upgrades

MIT Status workflow na GitHubie Ostatnie zatwierdzenie na GitHubie Data wydania na GitHubie Utrzymanie

Zainstaluj i skonfiguruj unattended-upgrades dla Ubuntu i Debiana (od wersji Wheezy), aby okresowo instalować aktualizacje zabezpieczeń.

Wymagania

Rola korzysta z modułu apt, który ma dodatkowe zależności.

Jeśli ustawisz unattended_upgrades_mail na adres e-mail, upewnij się, że polecenie mailx jest dostępne i twój system potrafi wysyłać e-maile.

Rola wymaga wersji unattended-upgrades 0.70 lub nowszej, dostępnej od Debiana Wheezy i Ubuntu 12.04. To wynika z użycia Wzorów Pochodzenia.

Automatyczny restart

Jeśli włączysz funkcję automatycznego restartu (unattended_upgrades_automatic_reboot), rola spróbuje zainstalować pakiet update-notifier-common, który jest wymagany na niektórych systemach do wykrywania i wykonywania restartu po aktualizacji. Opcjonalnie możesz określić konkretną porę na restart (unattended_upgrades_automatic_reboot_time).

Funkcja ta była zepsuta w Debianie Jessie, ale ostatecznie została włączona do pakietu unattended-upgrades.

Wyłączone zadania Cron

Na niektórych hostach możesz zauważyć, że plik cron dla unattended-upgrade /etc/cron.daily/apt został przemianowany na apt.disabled. Może to być decyzja dostawcy, aby zaoszczędzić pewne cykle CPU. Użyj roli enable-standard-cronjobs, aby włączyć unattended-upgrades.

Zmienne roli

main

  • unattended_upgrades_cache_valid_time: Aktualizuj pamięć podręczną apt, jeśli jest starsza niż podany czas w sekundach; przekazywane do modułu apt podczas instalacji pakietu.
    • Domyślnie: 3600

auto-upgrades

  • unattended_upgrades_enabled: Włącz skrypt aktualizacji/modernizacji (0=wyłączone)
    • Domyślnie: 1
  • unattended_upgrades_upgrade: Uruchamiaj skrypt "unattended-upgrade" do aktualizacji zabezpieczeń co n-dni (0=wyłączone)
    • Domyślnie: 1
  • unattended_upgrades_update_package_list: Wykonuj "apt-get update" automatycznie co n-dni (0=wyłączone)
    • Domyślnie: 1
  • unattended_upgrades_download_upgradeable: Wykonuj "apt-get upgrade --download-only" co n-dni (0=wyłączone)
    • Domyślnie: 0
  • unattended_upgrades_autoclean_interval: Wykonuj "apt-get autoclean" co n-dni (0=wyłączone)
    • Domyślnie: 7
  • unattended_upgrades_clean_interval: Wykonuj "apt-get clean" co n-dni (0=wyłączone)
    • Domyślnie: 0
  • unattended_upgrades_random_sleep: Definiuje maksymalny losowy interwał w sekundach, po którym rozpoczyna się zadanie apt (tylko dla systemów bez systemd)
    • Domyślnie: 1800 (30 minut)
  • unattended_upgrades_dl_limit: Ogranicza prędkość pobierania w kB/s przy użyciu funkcji limitu przepustowości apt.
    • Domyślnie: wyłączone

unattended-upgrades

  • unattended_upgrades_origins_patterns: tablica wzorów pochodzenia do określenia, czy pakiet może być automatycznie zainstalowany; szczegóły znajdziesz w Wzorach Pochodzenia poniżej.
    • Domyślnie dla Debiana: ['origin=Debian,codename=${distro_codename},label=Debian-Security']
    • Domyślnie dla Ubuntu: ['origin=Ubuntu,archive=${distro_codename}-security,label=Ubuntu']
  • unattended_upgrades_package_blacklist: pakiety, które nie będą automatycznie aktualizowane
    • Domyślnie: []
  • unattended_upgrades_autofix_interrupted_dpkg: czy po nieczystym zakończeniu dpkg uruchomić dpkg --force-confold --configure -a
    • Domyślnie: true
  • unattended_upgrades_minimal_steps: rozdziel aktualizację na jak najmniejsze fragmenty, aby mogły być przerwane sygnałem SIGUSR1.
    • Domyślnie: true
  • unattended_upgrades_install_on_shutdown: zainstaluj wszystkie aktualizacje unattended-upgrades, gdy maszyna jest wyłączana.
    • Domyślnie: false
  • unattended_upgrades_mail: adres e-mail do wysyłania informacji o aktualizacjach lub problemach z unattended upgrades
    • Domyślnie: false (nie wysyłaj e-maili)
  • unattended_upgrades_mail_only_on_error: wysyłaj e-maile tylko w przypadku błędów, w przeciwnym razie e-mail będzie wysyłany za każdym razem, gdy pojawi się aktualizacja pakietu.
    • Domyślnie: false
  • unattended_upgrades_remove_unused_dependencies: automatyczne usuwanie wszystkich nieużywanych zależności po aktualizacji.
    • Domyślnie: false
  • unattended_upgrades_remove_new_unused_dependencies: automatyczne usuwanie nowych nieużywanych zależności po aktualizacji.
    • Domyślnie: true
  • unattended_upgrades_automatic_reboot: Automatyczny restart systemu, jeśli jakikolwiek zaktualizowany pakiet tego wymaga, natychmiast po aktualizacji.
    • Domyślnie: false
  • unattended_upgrades_automatic_reboot_time: Automatyczny restart systemu, jeśli jakikolwiek zaktualizowany pakiet tego wymaga, o określonej porze (HH:MM) zamiast natychmiast po aktualizacji.
    • Domyślnie: false
  • unattended_upgrades_update_days: Ustaw dni tygodnia, w które należy stosować aktualizacje. Dni można określić jako skrócone nazwy lokalne lub pełne nazwy. Lub jako liczby całkowite, gdzie "0" to niedziela, "1" to poniedziałek itd. Przykład: {"Mon";"Fri"};
    • Domyślnie: wyłączone
  • unattended_upgrades_ignore_apps_require_restart: unattended-upgrades nie zaktualizuje automatycznie niektórych krytycznych pakietów wymagających restartu po aktualizacji (tj. w ich pliku debian/control jest dyrektywa XB-Upgrade-Requires: app-restart). Ustawiając tę opcję na true, unattended-upgrades zaktualizuje te pakiety niezależnie od dyrektywy.
    • Domyślnie: false
  • unattended_upgrades_syslog_enable: Zapisuj zdarzenia do syslog, co jest przydatne w środowiskach, w których wiadomości syslog są wysyłane do centralnego repozytorium.
    • Domyślnie: false
  • unattended_upgrades_syslog_facility: Zapisuj zdarzenia do określonego systemu syslog, lub do systemu daemon, jeśli nie jest on określony. Będzie mieć to wpływ tylko jeśli unattended_upgrades_syslog_enable jest ustawione na true.
    • Domyślnie: daemon
  • unattended_upgrades_verbose: Zdefiniuj poziom szczegółowości APT dla okresowych uruchomień. Wynik zostanie wysłany do roota.
    • Możliwe opcje:
      • 0: brak raportu
      • 1: raport postępu
      • 2: + wyniki poleceń
      • 3: + ślad włączony
    • Domyślnie: 0 (brak raportu)
  • unattended_upgrades_dpkg_options: Tablica opcji wiersza poleceń dpkg używanych podczas uruchomień unattended-upgrades, np. ["--force-confdef"], ["--force-confold"]
    • Domyślnie: []

Wzory Pochodzenia

Wzór Pochodzenia to silniejsza alternatywa dla opcji Dozwolone Pochodzenia używanej w poprzednich wersjach unattended-upgrade.

Wzór składa się z konkretnych słów kluczowych:

  • a,archive,suite – np. stable, trusty-security (archive=stable)
  • c,component – np. main, crontrib, non-free (component=main)
  • l,label – np. Debian, Debian-Security, Ubuntu
  • o,origin – np. Debian, Nieoficjalne Pakiety Multimedia, Ubuntu
  • n,codename – np. jessie, jessie-updates, trusty (jest to wspierane tylko w unattended-upgrades >= 0.80)
  • site – np. http.debian.net

Możesz przeglądać dostępne repozytoria za pomocą apt-cache policy i debugować swój wybór używając polecenia unattended-upgrades -d na docelowym systemie.

Dodatkowo unattended-upgrades obsługuje dwa makra (zmienne), pochodzące z /etc/debian_version:

  • ${distro_id} – Nazwa zainstalowanej dystrybucji, np. Debian lub Ubuntu.
  • ${distro_codename} – Zainstalowana nazwa kodowa, np. jessie lub trusty.

Użycie ${distro_codename} powinno być preferowane w porównaniu do używania stable lub oldstable jako wybranych, ponieważ kiedy stable przechodzi do oldstable, nie będą instalowane żadne aktualizacje zabezpieczeń, lub co gorsza, pakiet z nowszej wersji dystrybucji może zostać przypadkowo zainstalowany. To samo dotyczy aktualizacji instalacji z oldstable do stable, jeśli zapomnisz to zmienić w swoich wzorach pochodzenia, możesz nie otrzymać aktualizacji zabezpieczeń dla swojej nowszej wersji dystrybucji. Używając ${distro_codename}, obie sytuacje nigdy się nie zdarzą.

Przykłady Użycia Roli

Przykład dla Ubuntu, z własnymi wzorami pochodzenia, czarną listą pakietów oraz powiadomieniem e-mailowym:

- hosts: all
  roles:
  - role: racqspace.unattended_upgrades
    vars:
      unattended_upgrades_origins_patterns:
        - 'origin=Ubuntu,archive=${distro_codename}-security'
        - 'o=Ubuntu,a=${distro_codename}-updates'
    unattended_upgrades_package_blacklist: [cowsay, vim]
    unattended_upgrades_mail: '[email protected]'

Uwaga: Nie musisz określać unattended_upgrades_origins_patterns, rola użyje domyślnego wzoru dystrybucji, jeśli zmienna nie jest ustawiona.

Uruchamianie Tylko na Systemach Bazujących na Debianie

Jeśli zarządzasz wieloma dystrybucjami za pomocą tej samej playbook, możesz chcieć pominąć uruchamianie tej roli na systemach nieopartych na Debianie. Możesz użyć warunku when z rolą, aby ograniczyć rolę do określonych systemów:

- hosts: all
  roles:
     - role: racqspace.unattended_upgrades
       when: ansible_facts['os_family'] == 'Debian'

Przykłady Wzorów

Domyślnie dozwolone są tylko aktualizacje zabezpieczeń dla Ubuntu i Debiana. Możesz dodać więcej wzorów, aby pozwolić unattended-upgrades na automatyczne instalowanie większej liczby pakietów, jednak pamiętaj, że automatyczne główne aktualizacje mogą potencjalnie uszkodzić twój system.

Dla Debiana

unattended_upgrades_origins_patterns:
  - 'origin=Debian,codename=${distro_codename},label=Debian-Security' # aktualizacje zabezpieczeń
  - 'o=Debian,codename=${distro_codename},label=Debian' # aktualizacje w tym nie-zabezpieczeń
  - 'o=Debian,codename=${distro_codename},a=proposed-updates'

Na debianie wheezy, z powodu unattended-upgrades na poziomie 0.79.5, nie możesz używać dyrektywy codename.

Będziesz musiał używać pasowania opartego na archiwum:

unattended_upgrades_origins_patterns:
  - 'origin=Debian,a=stable,label=Debian-Security' # aktualizacje zabezpieczeń
  - 'o=Debian,a=stable,l=Debian' # aktualizacje w tym nie-zabezpieczeń
  - 'o=Debian,a=proposed-updates'

Proszę upewnić się, że przeczytałeś dotyczące tego problemy w dokumentacji wzorów pochodzenia powyżej.

Dla Ubunt

W Ubuntu archiwum zawsze zawiera nazwę kodową dystrybucji

unattended_upgrades_origins_patterns:
  - 'origin=Ubuntu,archive=${distro_codename}-security'
  - 'o=Ubuntu,a=${distro_codename}'
  - 'o=Ubuntu,a=${distro_codename}-updates'
  - 'o=Ubuntu,a=${distro_codename}-proposed-updates'

Dla Raspbian

W Raspbian można zaktualizować wszystkie pakiety z domowego repozytorium, w tym aktualizacje nie-zabezpieczeń lub nie aktualizować wcale.

Aktualizacja wszystkich, w tym nie-zabezpieczeń:

unattended_upgrades_origins_patterns:
  - 'origin=Raspbian,codename=${distro_codename},label=Raspbian'

Nie możesz stosować dyrektywy codename w raspbianie wheezy, tak samo jak w debianie wheezy powyżej.

Aby nie instalować żadnych aktualizacji na hoście raspbian, po prostu ustaw unattended_upgrades_origins_patterns na pustą listę:

unattended_upgrades_origins_patterns: []

Licencja

MIT

Informacje o autorze

Ta rola została stworzona w 2021 roku przez Clemens Kaserer.

Wsparcie od:

Zainstaluj
ansible-galaxy install racqspace.unattended_upgrades
Licencja
mit
Pobrania
1.4k
Właściciel