RHEL: автоматическое обновление ядра, автоматическое удаление старых ядер и автоматическая перезагрузка

Вопрос или проблема

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

  1. удалить все старые ядра (так как “installonly_limit=1” не работает для пакетов ядра)
  2. автоматический перезапуск

Ответ или решение

Для автоматизации обновления ядра в Red Hat Enterprise Linux (RHEL) с помощью dnf-automatic, а также для удаления старых версий ядра и автоматической перезагрузки системы, необходимо выполнить несколько шагов, описанных ниже.

Шаг 1: Установка и настройка dnf-automatic

Убедитесь, что пакет dnf-automatic установлен на вашей системе. Это можно сделать с помощью следующей команды:

sudo dnf install -y dnf-automatic

После установки откройте конфигурационный файл dnf-automatic.conf, чтобы настроить автоматические обновления:

sudo vi /etc/dnf/automatic.conf

В этом файле найдите следующие строки и настройте их:

[commands]
upgrade_type = default
random_sleep = 0
metadata_expire = 1h

Также убедитесь, что вы включили автоматическое обновление kernel:

[upgrade]
apply_updates = yes

Шаг 2: Настройка автоматического удаления старых ядер

Для автоматического удаления старых версий ядра используйте следующую команду, добавив ее в cron или systemd таймер. Можно создать новый скрипт, например, /usr/local/bin/cleanup_old_kernels.sh:

#!/bin/bash

# Количество ядер, которые нужно сохранить
KEEP=2

# Удаление старых ядер, оставляя только последние $KEEP
dnf --assumeyes remove $(dnf repoquery --installonly --latest-limit -$KEEP -q)

Не забудьте сделать его исполняемым:

sudo chmod +x /usr/local/bin/cleanup_old_kernels.sh

Теперь вы можете добавить этот скрипт в cron для регулярного выполнения, например, раз в неделю:

sudo crontab -e

Добавьте следующую строку:

0 3 * * 0 /usr/local/bin/cleanup_old_kernels.sh

Шаг 3: Автоматическая перезагрузка

Для автоматической перезагрузки системы после обновления ядра можно добавить следующую команду в конфигурацию dnf-automatic. В той же конфигурации automatic.conf, найдите секцию [commands] и добавьте строку:

[commands]
......
system_reboot = yes

Шаг 4: Запуск настройки dnf-automatic

Запустите службу для автоматического обновления с помощью следующей команды:

sudo systemctl enable --now dnf-automatic.timer

Это включает таймер, который будет запускать автоматизацию в соответствии с вашими настройками.

Проверка

Вы можете проверить статус таймера, чтобы убедиться, что он работает:

sudo systemctl list-timers dnf-automatic.timer

И в результате приведенные шаги обеспечат автоматическое обновление ядра, удаление старых ядер и перезагрузку системы без необходимости ручного вмешательства. Обязательно тестируйте данную конфигурацию в тестовой среде перед развертыванием в производственной среде.

Оцените материал
Добавить комментарий

Капча загружается...