racqspace.unattended_upgrades
Rola Ansible: unattended_upgrades
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
- Domyślnie:
auto-upgrades
unattended_upgrades_enabled
: Włącz skrypt aktualizacji/modernizacji (0=wyłączone)- Domyślnie:
1
- Domyślnie:
unattended_upgrades_upgrade
: Uruchamiaj skrypt "unattended-upgrade" do aktualizacji zabezpieczeń co n-dni (0=wyłączone)- Domyślnie:
1
- Domyślnie:
unattended_upgrades_update_package_list
: Wykonuj "apt-get update" automatycznie co n-dni (0=wyłączone)- Domyślnie:
1
- Domyślnie:
unattended_upgrades_download_upgradeable
: Wykonuj "apt-get upgrade --download-only" co n-dni (0=wyłączone)- Domyślnie:
0
- Domyślnie:
unattended_upgrades_autoclean_interval
: Wykonuj "apt-get autoclean" co n-dni (0=wyłączone)- Domyślnie:
7
- Domyślnie:
unattended_upgrades_clean_interval
: Wykonuj "apt-get clean" co n-dni (0=wyłączone)- Domyślnie:
0
- Domyślnie:
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)
- Domyślnie:
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']
- Domyślnie dla Debiana:
unattended_upgrades_package_blacklist
: pakiety, które nie będą automatycznie aktualizowane- Domyślnie:
[]
- Domyślnie:
unattended_upgrades_autofix_interrupted_dpkg
: czy po nieczystym zakończeniu dpkg uruchomićdpkg --force-confold --configure -a
- Domyślnie:
true
- Domyślnie:
unattended_upgrades_minimal_steps
: rozdziel aktualizację na jak najmniejsze fragmenty, aby mogły być przerwane sygnałem SIGUSR1.- Domyślnie:
true
- Domyślnie:
unattended_upgrades_install_on_shutdown
: zainstaluj wszystkie aktualizacje unattended-upgrades, gdy maszyna jest wyłączana.- Domyślnie:
false
- Domyślnie:
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)
- Domyślnie:
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
- Domyślnie:
unattended_upgrades_remove_unused_dependencies
: automatyczne usuwanie wszystkich nieużywanych zależności po aktualizacji.- Domyślnie:
false
- Domyślnie:
unattended_upgrades_remove_new_unused_dependencies
: automatyczne usuwanie nowych nieużywanych zależności po aktualizacji.- Domyślnie:
true
- Domyślnie:
unattended_upgrades_automatic_reboot
: Automatyczny restart systemu, jeśli jakikolwiek zaktualizowany pakiet tego wymaga, natychmiast po aktualizacji.- Domyślnie:
false
- Domyślnie:
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
- Domyślnie:
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 dyrektywaXB-Upgrade-Requires: app-restart
). Ustawiając tę opcję natrue
, unattended-upgrades zaktualizuje te pakiety niezależnie od dyrektywy.- Domyślnie:
false
- Domyślnie:
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
- Domyślnie:
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śliunattended_upgrades_syslog_enable
jest ustawione natrue
.- Domyślnie:
daemon
- Domyślnie:
unattended_upgrades_verbose
: Zdefiniuj poziom szczegółowości APT dla okresowych uruchomień. Wynik zostanie wysłany do roota.- Możliwe opcje:
0
: brak raportu1
: raport postępu2
: + wyniki poleceń3
: + ślad włączony
- Domyślnie:
0
(brak raportu)
- Możliwe opcje:
unattended_upgrades_dpkg_options
: Tablica opcji wiersza poleceń dpkg używanych podczas uruchomień unattended-upgrades, np.["--force-confdef"]
,["--force-confold"]
- Domyślnie:
[]
- 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 wunattended-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
lubUbuntu
.${distro_codename}
– Zainstalowana nazwa kodowa, np.jessie
lubtrusty
.
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:
Configure unattended-upgrades for Debian based systems.
ansible-galaxy install racqspace.unattended_upgrades