Пакет unattended-upgrades
выполняет автоматическую установку обновлений на Debian/Ubuntu.
Представляет собой Python-скрипт (1500 строк), расположенный в /usr/bin/unattended-upgrade
(при этом /usr/bin/unattended-upgrades
является симлинком на /usr/bin/unattended-upgrade
).
Аналог для CentsOS/RHEL – yum-cron
.
Устанавливаем:
[simterm]
$ sudo apt -y install unattended-upgrades
[/simterm]
Основной файл настроек – /etc/apt/apt.conf.d/50unattended-upgrades
, в нём настраиваются тип обновлений, отправка почты и прочее.
Настройки самих обновлений выполняются в файле /etc/apt/apt.conf.d/20auto-upgrades
, который можно создать вручную, или вызвав dpkg-reconfigure unattended-upgrades
:
Содержание
20auto-upgrades
Опции для /etc/apt/apt.conf.d/20auto-upgrades
:
APT::Periodic::Enable
: включение/отключение обновлений, 1 – вкл, 0 – выклAPT::Periodic::Update-Package-Lists
: как часто выполнятьapt update
в днях, 0 – отключить вообщеAPT::Periodic::Download-Upgradeable-Packages
: как часто выполнятьapt-get upgrade --download-only
APT::Periodic::Unattended-Upgrade
: как часто выполнятьapt upgrade
APT::Periodic::AutocleanInterval
: как часто выполнятьapt-get autoclean
APT::Periodic::Verbose
: отправка сообщений на почту и их детализация:- 0 – отключить вообще
- 1 – весь прогресс upgrade
- 2 – весь прогресс upgrade + stdout прогармм
- 3 – то же, плюс трассировка
50unattended-upgrades
Unattended-Upgrade::Origins-Pattern
Параметр Unattended-Upgrade::Origins-Pattern
описывает репозитории, которые будут использованы для получения обновлений:
... Unattended-Upgrade::Origins-Pattern { "origin=Debian,codename=${distro_codename},label=Debian-Security"; }; ...
В ${distro_codename}
будет подставлено имя версии, в данном случае stretch.
Unattended-Upgrade::Package-Blacklist
Задаётся список пакетов для игнорирования при установке обновлений:
... Unattended-Upgrade::Package-Blacklist { "openjdk-8-jdk"; }; ...
Unattended-Upgrade::Remove-Unused-Dependencies
Удаление неиспользуемых пакетов, apt-get autoremove
:
... Unattended-Upgrade::Remove-Unused-Dependencies "true"; ...
Unattended-Upgrade::Mail
Самая полезная поция – отправка почты на ящик, или пользователю. Использует mail
из mailutils
.
... Unattended-Upgrade::Mail "[email protected]"; ...
Или:
... Unattended-Upgrade::Mail "root"; ...
Unattended-Upgrade::MailOnlyOnError
Отправка почты только при проблемах при обновлении:
... Unattended-Upgrade::MailOnlyOnError "true"; ...
Unattended-Upgrade::Automatic-Reboot
Автоматически выполнять перезагрузку сервера, если файл /var/run/reboot-required
присутствует:
... Unattended-Upgrade::Automatic-Reboot "true"; ...
Перезагрузка будет выполнена немедленно, если не задана Automatic-Reboot-Time
.
Unattended-Upgrade::Automatic-Reboot-Time
Если Unattended-Upgrade::Automatic-Reboot
задана в true – то в Automatic-Reboot-Time
задаётся время для перезагрузки:
... Unattended-Upgrade::Automatic-Reboot-Time "02:00"; ...
Запуск
После выполнения всех настроек – можно выполнить dry-run для проверки:
[simterm]
root@bitwarden-production:/home/admin# unattended-upgrade -v -d --dry-run Initial blacklisted packages: Initial whitelisted packages: Starting unattended upgrades script Allowed origins are: ['origin=Debian,codename=stretch,label=Debian-Security'] pkgs that look like they should be upgraded: Fetched 0 B in 0s (0 B/s) fetch.run() result: 0 blacklist: [] whitelist: [] No packages found that can be upgraded unattended and no pending auto-removals
[/simterm]
И если есть доступные обновления – то установить их:
[simterm]
root@bitwarden-production:/home/admin# unattended-upgrade -v -d
[/simterm]
Настройка почты
Можно настроить локальный Exim (см. Exim: Mailing to remote domains not supported), но нам Gmail, на котором ящик администратора, забанил отправку почты с этого IP :-).
Поэтому – используем AWS SES.
Для отправки через AWS SES – устанавливаем локальный SMTP клиент, например – ssmtp
:
[simterm]
root@bitwarden-production:/home/admin# apt install mailutils ssmtp
[/simterm]
Редактируем /etc/ssmtp/ssmtp.conf
:
[email protected] mailhub=email-smtp.us-east-1.amazonaws.com:587 AuthUser=AKI***OAQ AuthPass=BH3***gpM UseTLS=YES UseSTARTTLS=YES hostname=accounts.example.com
Настраиваем Mail From для SSMTP – указываем ящик, который зарегистрирован в AWS SES, иначе получим ошибку “554 Message rejected: Email address is not verified“.
Редактируем /etc/ssmtp/revaliases
:
root: [email protected]
Проверяем отправку:
[simterm]
root@bitwarden-production:/home/admin# echo "Test" | mail -s "Test" [email protected]
[/simterm]
Логи unattended-upgrades
– в каталоге /var/log/unattended-upgrades/
.
Готово.