racqspace.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,Ubuntuo,origin– например,Debian,Unofficial Multimedia Packages,Ubuntun,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.unattended_upgrades