unattended_upgrades
Ansible Роль: unattended_upgrades
Установите и настройте unattended-upgrades для Ubuntu и Debian (начиная с Wheezy), чтобы периодически устанавливать обновления безопасности.
Требования
Роль использует apt модуль, который имеет дополнительные зависимости.
Если вы установите unattended_upgrades_mail
на адрес электронной почты, убедитесь, что команда mailx
доступна и ваша система может отправлять электронные письма.
Роль требует версию unattended-upgrades 0.70 или новее, которая доступна с Debian Wheezy и Ubuntu 12.04 соответственно. Это связано с использованием Origins Patterns.
Автоматическая перезагрузка
Если вы включите функцию автоматической перезагрузки (unattended_upgrades_automatic_reboot
), роль попытается установить пакет update-notifier-common
, который требуется на некоторых системах для определения и выполнения перезагрузки после обновления. Вы можете дополнительно определить конкретное время для перезагрузки (unattended_upgrades_automatic_reboot_time
).
Эта функция была неисправна в Debian Jessie, но в конечном итоге она была включена в пакет unattended-upgrades.
Отключенные задачи Cron
На некоторых хостах вы можете обнаружить, что файл cron unattended-upgrade /etc/cron.daily/apt
был переименован в apt.disabled
. Это, возможно, решение поставщика, чтобы сэкономить ресурсы CPU. Используйте роль enable-standard-cronjobs для повторного включения unattended-upgrades.
Переменные роли
main
unattended_upgrades_cache_valid_time
: Обновить кеш apt, если он старше заданного времени в секундах; передается в apt модуль в процессе установки пакетов.- Значение по умолчанию:
3600
- Значение по умолчанию:
auto-upgrades
unattended_upgrades_enabled
: Включить сценарий обновления (0=выключено)- Значение по умолчанию:
1
- Значение по умолчанию:
unattended_upgrades_upgrade
: Запускать сценарий безопасности "unattended-upgrade" каждые n-дней (0=выключено)- Значение по умолчанию:
1
- Значение по умолчанию:
unattended_upgrades_update_package_list
: Выполнять "apt-get update" автоматически каждые n-дней (0=выключено)- Значение по умолчанию:
1
- Значение по умолчанию:
unattended_upgrades_download_upgradeable
: Каждые n-дней выполнять "apt-get upgrade --download-only" (0=выключено)- Значение по умолчанию:
0
- Значение по умолчанию:
unattended_upgrades_autoclean_interval
: Каждый n-день выполнять "apt-get autoclean" (0=выключено)- Значение по умолчанию:
7
- Значение по умолчанию:
unattended_upgrades_clean_interval
: Каждый n-день выполнять "apt-get clean" (0=выключено)- Значение по умолчанию:
0
- Значение по умолчанию:
unattended_upgrades_random_sleep
: Определите максимальный случайный интервал в секундах, после которого начинается работа apt (только для систем без systemd)- Значение по умолчанию:
1800
(30 минут)
- Значение по умолчанию:
unattended_upgrades_dl_limit
: Ограничить скорость загрузки в кБ/с с помощью функции ограничения пропускной способности apt.- Значение по умолчанию: отключено
unattended-upgrades
unattended_upgrades_origins_patterns
: массив шаблонов источников для определения, может ли пакет быть автоматически установлен, подробнее см. Origins Patterns ниже.- Значение по умолчанию для Debian:
['origin=Debian,codename=${distro_codename},label=Debian-Security']
- Значение по умолчанию для Ubuntu:
['origin=Ubuntu,archive=${distro_codename}-security,label=Ubuntu']
- Значение по умолчанию для Debian:
unattended_upgrades_package_blacklist
: пакеты, которые не будут автоматически обновляться- Значение по умолчанию:
[]
- Значение по умолчанию:
unattended_upgrades_autofix_interrupted_dpkg
: следует ли при некорректном выходе dpkg выполнятьdpkg --force-confold --configure -a
- Значение по умолчанию:
true
- Значение по умолчанию:
unattended_upgrades_minimal_steps
: разбить обновление на наименьшие возможные части, чтобы их можно было прервать с помощью SIGUSR1.- Значение по умолчанию:
true
- Значение по умолчанию:
unattended_upgrades_install_on_shutdown
: устанавливать все unattended-upgrades при выключении машины.- Значение по умолчанию:
false
- Значение по умолчанию:
unattended_upgrades_mail
: адрес электронной почты для отправки информации об обновлениях или проблемах с unattended upgrades- Значение по умолчанию:
false
(не отправлять электронные письма)
- Значение по умолчанию:
unattended_upgrades_mail_only_on_error
: отправлять электронную почту только в случае ошибок, в противном случае электронная почта будет отправляться каждый раз при обновлении пакетов.- Значение по умолчанию:
false
- Значение по умолчанию:
unattended_upgrades_remove_unused_dependencies
: выполнять автоматическое удаление всех неиспользуемых зависимостей после обновления.- Значение по умолчанию:
false
- Значение по умолчанию:
unattended_upgrades_remove_new_unused_dependencies
: выполнять автоматическое удаление новых неиспользуемых зависимостей после обновления.- Значение по умолчанию:
true
- Значение по умолчанию:
unattended_upgrades_automatic_reboot
: Автоматически перезагрузить систему, если какое-либо обновленное пакеты требует этого, сразу после обновления.- Значение по умолчанию:
false
- Значение по умолчанию:
unattended_upgrades_automatic_reboot_time
: Автоматически перезагрузить систему, если какое-либо обновленное пакеты требует этого, в определенное время (HH:MM) вместо немедленной перезагрузки после обновления.- Значение по умолчанию:
false
- Значение по умолчанию:
unattended_upgrades_update_days
: Установите дни недели, в которые должны применяться обновления. Дни можно указывать как локализованные сокращенные или полные названия. Или в виде целых чисел, где "0" - воскресенье, "1" - понедельник и т.д. Например:{"Mon";"Fri"};
- Значение по умолчанию: отключено
unattended_upgrades_ignore_apps_require_restart
: unattended-upgrades не будет автоматически обновлять некоторые критически важные пакеты, требующие перезагрузки после обновления (например, если в их файле debian/control есть директиваXB-Upgrade-Requires: app-restart
). Если эта опция установлена вtrue
, unattended-upgrades будет обновлять эти пакеты независимо от этой директивы.- Значение по умолчанию:
false
- Значение по умолчанию:
unattended_upgrades_syslog_enable
: Записывать события в syslog, что полезно в средах, где сообщения syslog отправляются в центральное хранилище.- Значение по умолчанию:
false
- Значение по умолчанию:
unattended_upgrades_syslog_facility
: Записывать события в указанное средство syslog, или в средство демона, если не указано. Будет иметь эффект только еслиunattended_upgrades_syslog_enable
установлено вtrue
.- Значение по умолчанию:
daemon
- Значение по умолчанию:
unattended_upgrades_verbose
: Определите уровень подробности APT для периодических запусков. Вывод будет отправлен root.- Возможные опции:
0
: нет отчета1
: отчет о прогрессе2
: + вывод команд3
: + трассировка включена
- Значение по умолчанию:
0
(нет отчета)
- Возможные опции:
unattended_upgrades_dpkg_options
: Массив параметров командной строки dpkg, используемых во время запуска unattended-upgrades, например,["--force-confdef"]
,["--force-confold"]
- Значение по умолчанию:
[]
- Значение по умолчанию:
Шаблоны источников
Шаблон источника - это более мощная альтернатива параметру Разрешенные Источники, используемому в предыдущих версиях unattended-upgrade.
Шаблон состоит из конкретных ключевых слов:
a
,archive
,suite
– например,stable
,trusty-security
(archive=stable
)c
,component
– например,main
,crontrib
,non-free
(component=main
)l
,label
– например,Debian
,Debian-Security
,Ubuntu
o
,origin
– например,Debian
,Unofficial Multimedia Packages
,Ubuntu
n
,codename
– например,jessie
,jessie-updates
,trusty
(это поддерживается только вunattended-upgrades
>= 0.80)site
– например,http.debian.net
Вы можете просмотреть доступные репозитории, используя apt-cache policy
, и отладить свой выбор, используя команду unattended-upgrades -d
на целевой системе.
Кроме того, unattended-upgrades поддерживает две макроса (переменные), основанные на /etc/debian_version
:
${distro_id}
– название установленного дистрибутива, например,Debian
илиUbuntu
.${distro_codename}
– установленное кодовое имя, например,jessie
илиtrusty
.
Использование ${distro_codename}
следует предпочесть вместо использования stable
или oldstable
в качестве выбранного источника, так как как только stable
перейдет в oldstable
, никаких обновлений безопасности не будет установлено, или, что еще хуже, пакеты из более нового релиза дистрибутива будут установлены случайно. То же самое относится и к обновлению вашей установки с oldstable
на stable
; если вы забудете изменить это в своих шаблонах источников, вы можете не получить обновления безопасности для вашего нового релиза дистрибутива. Используя ${distro_codename}
, оба случая не произойдут никогда.
Примеры использования роли
Пример для Ubuntu с пользовательскими шаблонами, пакетами в черном списке и уведомлением по электронной почте:
- 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]'
Примечание: У вас нет необходимости указывать unattended_upgrades_origins_patterns
, роль использует значения по умолчанию дистрибутива, если переменная не установлена.
Запуск только на системах на базе Debian
Если вы управляете несколькими дистрибутивами с помощью одного плейбука, вы можете захотеть пропустить выполнение этой роли на недебианских системах. Вы можете использовать условие when
с ролью, чтобы ограничить роль определенными системами:
- hosts: all
roles:
- role: racqspace.unattended_upgrades
when: ansible_facts['os_family'] == 'Debian'
Примеры шаблонов
По умолчанию разрешены только обновления безопасности как для Ubuntu, так и для Debian. Вы можете добавить больше шаблонов, чтобы разрешить unattended-updates устанавливать больше пакетов автоматически, однако будьте осторожны, поскольку автоматические крупные обновления могут потенциально сломать вашу систему.
Для Debian
unattended_upgrades_origins_patterns:
- 'origin=Debian,codename=${distro_codename},label=Debian-Security' # обновления безопасности
- 'o=Debian,codename=${distro_codename},label=Debian' # обновления, включая не безопасности
- 'o=Debian,codename=${distro_codename},a=proposed-updates'
На debian wheezy, из-за того что unattended-upgrades
равен 0.79.5
, вы не можете использовать директиву codename
.
Вам придется использовать сопоставление по архивам вместо:
unattended_upgrades_origins_patterns:
- 'origin=Debian,a=stable,label=Debian-Security' # обновления безопасности
- 'o=Debian,a=stable,l=Debian' # обновления, включая не безопасности
- 'o=Debian,a=proposed-updates'
Пожалуйста, убедитесь, что вы прочитали о проблемах, связанных с этим, в документации по шаблону источников выше.
Для Ubuntu
В Ubuntu архив всегда содержит кодовое имя дистрибутива
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'
Для Raspbian
В Raspbian можно обновить все пакеты из репозитория по умолчанию, включая не безопасные обновления, или не обновлять вовсе.
Обновление всех, включая не безопасные:
unattended_upgrades_origins_patterns:
- 'origin=Raspbian,codename=${distro_codename},label=Raspbian'
На raspbian wheezy вы не можете использовать директиву codename
, так же как и в debian wheezy выше.
Чтобы не устанавливать никаких обновлений на хосте raspbian, просто установите unattended_upgrades_origins_patterns
в пустой список:
unattended_upgrades_origins_patterns: []
Лицензия
MIT
Информация об авторе
Эта роль была создана в 2021 году Клеменсом Касером.
Вклад вносили:
Configure unattended-upgrades for Debian based systems.
ansible-galaxy install racqspace/ansible-role-unattended-upgrades