Как настроить автоматические обновления в Debian Wheezy
Version 1.0
Authors: Falko Timme, Srijan Kishore
Последнее редактирование: 7 июля 2014
1 Настройка системы для автоматических обновлений
Чтобы система устанавливала обновления автоматически, нужно установить пакет unattended-upgrades. Рекомендуется также иметь программу /usr/bin/mail для отправки уведомлений по почте — для этого ставим пакет bsd-mailx:
apt-get install unattended-upgrades bsd-mailxКонфигурация пакета unattended-upgrades хранится в файле /etc/apt/apt.conf.d/50unattended-upgrades. По умолчанию файл обычно подходит для большинства случаев; если хотите изменить поведение, прочитайте комментарии внутри файла — они объясняют настройки. Например, вы можете задать источники обновлений (по умолчанию: stable и security), исключить отдельные пакеты из обновления, включить отправку почты при ошибках, автоматически удалять неиспользуемые зависимости после обновления или перезагружать систему при необходимости.
Обратите внимание: двойные слеши // используются для комментариев в конфигурации; всё, что следует после них в той же строке, не обрабатывается.
| // Automatically upgrade packages from these origin patterns Unattended-Upgrade::Origins-Pattern { // Archive or Suite based matching: // Note that this will silently match a different release after // migration to the specified archive (e.g. testing becomes the // new stable). // "o=Debian,a=stable"; // "o=Debian,a=stable-updates"; // "o=Debian,a=proposed-updates"; "origin=Debian,archive=stable,label=Debian-Security"; }; // List of packages to not update Unattended-Upgrade::Package-Blacklist { // "vim"; // "libc6"; // "libc6-dev"; // "libc6-i686"; }; // This option allows you to control if on a unclean dpkg exit // unattended-upgrades will automatically run // dpkg --force-confold --configure -a // The default is true, to ensure updates keep getting installed //Unattended-Upgrade::AutoFixInterruptedDpkg "false"; // Split the upgrade into the smallest possible chunks so that // they can be interrupted with SIGUSR1. This makes the upgrade // a bit slower but it has the benefit that shutdown while a upgrade // is running is possible (with a small delay) //Unattended-Upgrade::MinimalSteps "true"; // Install all unattended-upgrades when the machine is shuting down // instead of doing it in the background while the machine is running // This will (obviously) make shutdown slower //Unattended-Upgrade::InstallOnShutdown "true"; // Send email to this address for problems or packages upgrades // If empty or unset then no email is sent, make sure that you // have a working mail setup on your system. A package that provides // 'mailx' must be installed. E.g. "[email protected]" //Unattended-Upgrade::Mail "root"; // Set this value to "true" to get emails only on errors. Default // is to always send a mail if Unattended-Upgrade::Mail is set //Unattended-Upgrade::MailOnlyOnError "true"; // Do automatic removal of new unused dependencies after the upgrade // (equivalent to apt-get autoremove) //Unattended-Upgrade::Remove-Unused-Dependencies "false"; // Automatically reboot *WITHOUT CONFIRMATION* if a // the file /var/run/reboot-required is found after the upgrade //Unattended-Upgrade::Automatic-Reboot "false"; // Use apt bandwidth limit feature, this example limits the download // speed to 70kb/sec //Acquire::http::Dl-Limit "70"; |
Далее создайте файл /etc/apt/apt.conf.d/02periodic, чтобы включить периодические проверки и обновления (файл содержит комментарии и самодокументирован):
vi /etc/apt/apt.conf.d/02periodic| // Enable the update/upgrade script (0=disable) APT::Periodic::Enable "1"; // Do "apt-get update" automatically every n-days (0=disable) APT::Periodic::Update-Package-Lists "1"; // Do "apt-get upgrade --download-only" every n-days (0=disable) APT::Periodic::Download-Upgradeable-Packages "1"; // Run the "unattended-upgrade" security upgrade script // every n-days (0=disabled) // Requires the package "unattended-upgrades" and will write // a log in /var/log/unattended-upgrades APT::Periodic::Unattended-Upgrade "1"; // Do "apt-get autoclean" every n-days (0=disable) APT::Periodic::AutocleanInterval "7"; |
Все — unattended-upgrades будет запускаться раз в сутки через cron-скрипт /etc/cron.daily/apt.
Логи работы сохраняются в /var/log/unattended-upgrades/unattended-upgrades.log. Пример строк лога после успешного обновления:
2014-07-07 17:49:30,878 INFO Initial blacklisted packages:
2014-07-07 17:49:30,880 INFO Starting unattended upgrades script
2014-07-07 17:49:30,880 INFO Allowed origins are: ["('Debian', 'stable')", "('Debian', 'wheezy-security')"]
2014-07-07 17:50:05,222 INFO Packages that are upgraded: apache2 apache2-doc apache2-mpm-prefork apache2-utils apache2.2-bin
apache2.2-common apt apt-utils base-files dpkg dselect file gnupg gpgv
libapt-inst1.5 libapt-pkg4.12 libc-bin libc6 libc6:i386 libcurl3:i386
libdbus-1-3 libdbus-1-3:i386 libgnutls26 libgnutls26:i386 libjbig0:i386
libmagic1 libnspr4:i386 libnspr4-0d:i386 libsnmp-base libsnmp15 libssl1.0.0
libssl1.0.0:i386 libwbclient0 libxml2 libxml2:i386 locales locales-all
multiarch-support openssh-client openssh-server openssl samba samba-common
snmp tzdata wget whois
2014-07-07 17:50:05,225 INFO Writing dpkg log to '/var/log/unattended-upgrades/unattended-upgrades-dpkg_2014-07-07_17:50:05.224836.log'
2014-07-07 17:51:51,290 INFO All upgrades installedВажно: перед развёртыванием автообновлений на продуктивных серверах протестируйте процесс в staging и убедитесь, что у вас есть резервный план на случай неудачного обновления или необходимости отката.
2 Настроить отправку уведомлений об обновлениях
Пакет apticron шлёт уведомления по электронной почте о том, какие пакеты имеют доступные обновления, и прилагает список изменений для каждого пакета. Чтобы установить apticron, выполните:
apt-get install apticronДалее отредактируйте /etc/apticron/apticron.conf и пропишите EMAIL — один или несколько адресов, разделённых пробелом, которые будут получать уведомления:
vi /etc/apticron/apticron.conf| [...] # set EMAIL to a space separated list of addresses which will be notified of # impending updates # EMAIL="root@localhost [email protected]" [...] |
Остальные параметры конфигурации по умолчанию подходят в большинстве сценариев.
3 Ссылки
Debian: http://www.debian.org/
Мини-методология: как безопасно включить автообновления
- Сначала протестируйте в нерабочей среде (staging) с теми же пакетами и репозиториями.
- Включите автообновления только для security/стабильных каналов.
- Настройте уведомления по почте и централизованный сбор логов.
- Планируйте окно техобслуживания и оповещайте заинтересованные стороны.
- Автоматический перезапуск сервисов/перезагрузка — включать только при явной необходимости.
Чек-лист по ролям
- Системный администратор:
- Установить unattended-upgrades и bsd-mailx.
- Проверить /etc/apt/apt.conf.d/50unattended-upgrades и 02periodic.
- Настроить мониторинг логов и оповещения.
- DevOps-инженер:
- Тестировать обновления в staging.
- Обеспечить возможность быстрого отката (snapshots, резервные копии).
- Служба поддержки:
- Подготовить сценарии реагирования в случае падения сервиса после обновления.
Критерии приёмки
- Автообновления выполняются без вмешательства в течение 7 дней.
- Система успешно отправляет уведомления на указанные email-адреса.
- Логи обновлений корректно собираются и доступны в централизованном хранилище.
- Процесс обновления отрабатывает в staging без ошибок.
Матрица рисков и смягчения
- Риск: критическое обновление ломает сервисы.
Смягчение: тестирование в staging + быстрый откат/резервные копии. - Риск: переполнение диска логами/пакетами.
Смягчение: настройка лог- ротации и мониторинга свободного места. - Риск: потеря уведомлений (почтовый агент не настроен).
Смягчение: проверка доставки почты, альтернативные каналы (Slack, PagerDuty).
SOP — пошаговый план быстрого развёртывания
- На тестовой машине: установить пакеты и настроить 50unattended-upgrades и 02periodic.
- Запустить ручное обновление и проверить логи: /var/log/unattended-upgrades/*.
- Включить автообновления на небольшом пуле хостов, наблюдать 72 часа.
- Расширять на остальные хосты поэтапно, отслеживая метрики.
Глоссарий (одна строка)
- unattended-upgrades: пакет, автоматизирующий установку обновлений.
- apticron: пакет, отправляющий уведомления о доступных обновлениях.
Короткое объявление для команды (100–200 слов)
Внимание: мы включаем автоматические обновления безопасности на серверах Debian Wheezy с помощью unattended-upgrades и уведомлений через apticron. Сначала функционал будет протестирован на стенде, затем постепенно развернёмся на продакшн. Это снизит риски уязвимостей, однако просим команду быть готовой к возможному откату и следить за уведомлениями. Пожалуйста, убедитесь, что ваши контактные адреса в /etc/apticron/apticron.conf актуальны.
Резюме
- unattended-upgrades позволяет безопасно автоматизировать установку обновлений.
- apticron информирует о доступных обновлениях по почте.
- Тестируйте изменения в staging и имейте план отката.
Ключевые файлы
- /etc/apt/apt.conf.d/50unattended-upgrades
- /etc/apt/apt.conf.d/02periodic
- /etc/apticron/apticron.conf
- /var/log/unattended-upgrades/unattended-upgrades.log
Похожие материалы
Несколько аккаунтов Skype: Multi Skype Launcher
Журнал для работы: повысить продуктивность
Персональные звуки уведомлений на Android
Скачивание шоу Hulu для офлайн‑просмотра
Microsoft Start: персонализированная новостная лента