unattended_upgrades

Ansible Роль: unattended_upgrades

MIT GitHub Workflow Status GitHub last commit GitHub Release Date Maintenance

Установите и настройте 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']
  • 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
Лицензия
mit
Загрузки
1162
Владелец