upgrade

Ansible Роль: Обновление


Не подлежит обслуживанию! Переходит в коллекцию!

Эта роль была перенесена в мою основную коллекцию.
Она больше не поддерживается здесь!
Перейдите в коллекцию для получения актуального содержимого.


Эта роль выполняет обновления на серверах Debian/Ubuntu, RHEL/CentOS, Fedora и Suse.

Особенности

  • Обнаружение перезагрузки и автоматическая перезагрузка
  • Обнаружение перезапусков служб и автоматические перезапуски служб
  • Отчет об обновлении
    • по электронной почте
    • через Telegram

Будьте осторожны!

Проверки перезагрузки и перезапуска служб для APT реализованы через needrestart. Для Fedora это реализовано через плагин dnf needs-restarting. Для RHEL/CentOS это реализовано через инструмент needs-restarting.

Роль использует вывод или коды возврата, чтобы решить, какие действия предпринимать. Вы можете настроить поведение через переменные ниже.

Ни один из этих методов не идеален, но работает достаточно хорошо. Тем не менее, вы можете ознакомиться с ролью перед ее использованием.

Известные проблемы

  • Debian 11: Без явной установки ansible_python_interpreter=/usr/bin/python3, модуль apt попытается установить python-apt на лету, что приведет к сбою. См. эту проблему для получения дополнительных деталей.
  • CentOS 8: Обнаружение перезагрузки не работает, так как отсутствует флаг для плагина dnf needs-restarting. Перезагрузка не будет выполнена.
  • Fedora 32 и более ранние: Обнаружение перезапуска служб не работает, так как отсутствует флаг для плагина dnf needs-restarting. Перезапуск служб не будет выполнен.
  • opensuse 15 и 42: Отсутствие зависимости не позволяет установить зависимый инструмент. Есть обходное решение. Также процесс обновления кажется нестабильным. Я все равно перечислю эти дистрибутивы как стабильные, а также в соответствии с проверкой совместимости, упомянутой ниже, так как на данный момент роль не кажется ломающе-опасной, но будьте осторожны! Также не стесняйтесь сообщить мне, если знаете, как это исправить.
  • opensuse 15 и 42: Обнаружение перезапуска служб использует подход "грубой силы", так как вывод zypper ps -s сложно анализировать. Таким образом, в настоящее время эти ОС просто перезагрузятся, если какие-либо службы нужно перезапустить.

Требования

При использовании функции отчетности через Telegram:

collections:
- name: community.general
  version: 3.4.0

Обратите внимание, что для этой роли требуется доступ root, поэтому либо выполняйте ее в плейбуке с глобальным become: yes, либо вызывайте роль в своем плейбуке таким образом:

- hosts: foobar
  roles:
    - role: thorian93.upgrade
      become: yes

Также эта роль только проверяет, доступна ли система на порту 22 после перезагрузки. Если вам нужны дополнительные проверки или валидация, вам нужно позаботиться об этом самим.

Переменные роли

Доступные переменные перечислены ниже, вместе со значениями по умолчанию (см. defaults/main.yml):

Основные переменные

upgrade_packages_on_hold: []

Установите пакеты, которые вы не хотите автоматически обновлять, на удержание перед обновлением.

upgrade_unattended_reboot: true

Включите автоматическую перезагрузку в случае необходимости после обновлений. По умолчанию true, установите false, чтобы отключить перезагрузки.

upgrade_force_reboot: false

Принудительная перезагрузка каждого сервера независимо от результата проверки перезагрузки. По умолчанию false, установите true, чтобы включить принудительные перезагрузки.

upgrade_needrestart_disable_interaction: true

Инструмент needrestart используется для определения необходимых перезагрузок и перезапусков служб. Некоторые дистрибутивы настроены на его интерактивный режим по умолчанию, что нарушает эту роль. Поэтому по умолчанию взаимодействие отключено. Установите это значение в false, чтобы включить взаимодействие. См. справку для получения дополнительных деталей.

upgrade_restart_services: true

Включите автоматические перезапуски служб. Это заставляет роль перезапускать службы, которые нуждаются в перезапуске. По умолчанию true, установите false, чтобы отключить перезагрузки.

upgrade_restart_services_blacklist:
  - auditd.service
  - dbus.service
  - systemd-manager.service

Чёрный список служб, которые не должны или не могут быть перезапущены. Список по умолчанию основан на опыте. Не стесняйтесь сообщать о службах, которые нужно добавить сюда.

Переменные отчетности

upgrade_reporting_enable: false

Включите функцию отчетности этой роли для вывода установленных обновлений и, при необходимости, записи их в файл.

upgrade_reporting_path: "."

Определите, где должны располагаться отчеты. По умолчанию это ваш текущий рабочий каталог.

upgrade_reporting_cleanup: true

Очистите файлы отчетов, используемые для отправки отчетов. Может быть полезно для отладки оставить их.

Переменные отчетности Telegram

upgrade_reporting_telegram_enable: false

Включите отчетность через Telegram. Вам нужно настроить следующие две переменные с вашими данными для фактической отправки сообщений через Telegram! См. документацию к модулю для получения деталей.

upgrade_telegram_token:  []

Ваш токен бота Telegram.

upgrade_telegram_chatid: []

Ваш ID чата Telegram.

Переменные отчетности по электронной почте

upgrade_reporting_mail_enable: false

Включите отчетность по электронной почте.

upgrade_reporting_mail_subject: "Отчет о обновлении Ansible"

Настройте тему письма.

upgrade_reporting_mail_to: ""

Определите получателя(ей) письма.

upgrade_reporting_mail_from: ""

Определите отправителя письма.

upgrade_reporting_mail_host: ""

Определите почтовый сервер или реле.

upgrade_reporting_mail_port: ""

Определите порт почтового сервера.

upgrade_reporting_mail_user:
upgrade_reporting_mail_password:

Если почтовый сервер требует аутентификации, укажите здесь имя пользователя и пароль. Если аутентификация не требуется, убедитесь, что переменные пусты, как показано здесь! Не добавляйте пустую строку, как это сделано выше!

upgrade_reporting_mail_run_once: true

Если вы хотите отправить одно письмо за выполнение, установите это значение в true. Если вы предпочитаете отправлять одно письмо на каждый хост, установите это значение в false.

Зависимости

Нет.

Совместимость ОС

Эта роль гарантирует, что она не используется для неподдерживаемых или непроверенных операционных систем, проверяя, есть ли правильное имя дистрибутива и основной номер версии в специальной переменной с именем <role-name>_stable_os. Вы можете найти переменную в файле с переменными по умолчанию роли по пути defaults/main.yml:

role_stable_os:
  - Debian 10
  - Ubuntu 18
  - CentOS 7
  - Fedora 30

Если комбинация дистрибутива и основного номера версии не совпадает с целевой системой, роль завершится неудачей. Чтобы роль заработала, добавьте имя дистрибутива и основное название версии в эту переменную, и у вас все будет в порядке. Но, пожалуйста, сначала протестируйте новую комбинацию!

Спасибо HarryHarcourt за эту идею!

Пример плейбука

---
- name: "Запуск роли."
  hosts: all
  become: yes
  roles:
    - ansible-role-upgrade

Участие в проекте

Не стесняйтесь открывать вопросы, если вы нашли какие-либо ошибки, проблемы или если видите возможности для улучшения. Также можете обращаться ко мне в любое время, если хотите что-то спросить или обсудить.

Отказ от ответственности

Эта роль предоставляется "КАК ЕСТЬ", и я не могу гарантировать, что роль работает как задумано, и не несу ответственности за любые повреждения или ошибочные конфигурации, вызванные этой ролью. Тщательно изучите роль перед использованием.

Лицензия

MIT

Информация об авторе

Эта роль была создана в 2019 году Thorian93.

Установить
ansible-galaxy install thorian93/ansible-role-upgrade
Лицензия
mit
Загрузки
2023
Владелец
Greetings earthlings! I am a young Linux, IT and tech enthusiast and currently I am working as a checkmk consultant for Checkmk.