ガジェット系から技術系ブログになりつつある当ブログですが, 今回は CentOS8 環境下における自動アップデートの設定をしていきましょう.
DNF における自動アップデート
CentOS8 からはパッケージ管理が従来の yum コマンドから dnf コマンドに変更になりました.
そのため CentOS7 まで自動アップデートに使っていた Yum-Cron ではなく, DNF-Automatic を使用して自動でのパッケージアップデートを行う必要があります. (Yum-Cron が使用不可なのかは未検証)
dnf.conf でアップデート対象からカーネルを除外
DNF でのアップデートの際, パッケージ等だけでなくカーネルまで更新されてしまうことを防ぐために設定を行います.
不用意にカーネルを更新すると最悪カーネルパニックなどで起動すらできなくなる等の問題が発生する潜在的なリスクがあります.
確かに最近はカーネルパニックに遭遇することはかなり減りましたが, 安定稼働が求められるサーバーだからこそ設定を行いましょう.
お好きなエディタで/etc/dnf/dnf.confを開きます
# nano /etc/dnf/dnf.conf
適当な場所に追記
exclude=kernel*
DNF-Automatic のインストール
ここからは実際にアップデートを行ってくれる DNF-Automatic をインストールしていきます.
dnf install dnf-automatic
DNF-Automatic の設定
お好きなエディタで/etc/dnf/automatic.confを開きます
# vim /etc/dnf/automatic.conf
アップデートタイプの設定
デフォルトは default ですべての種類のアップデートがインストールされます.
security に設定すると重要なセキュリティアップデートのみがインストールされるはずのようですが, これには問題があります(後述).
upgrade_type = default
アップデートの自動インストール
デフォルトではダウンロードしたアップデートを自動ではインストールしない設定になっています.
アップデートを自動化する今回の目的には適合しませんから yes に変更します
apply_updates = yes
アップデート確認の間隔
デフォルトでは起動後10分後に確認を行い, 1時間間隔で自動確認するようになっています.
これ以上遅くする必要も速くする必要も恐らくないと思いますが変更が必要な場合はこちらにコンフィグがあります.
nano /etc/systemd/system/multi-user.target.wants/dnf-makecache.timer
サービス有効化, 起動
いつものおまじないです.
# systemctl enable dnf-automatic.timer
# systemctl start dnf-automatic.timer
アップデート種別での Security は使えない可能性
CentOS Linux では dnf コマンドで –security オプションが使えない
こちらの記事にありますが, CentOS では dnf コマンドの –security オプションが利用できないようです.
–security オプションは, dnf upgrade でセキュリティアップデートのみをインストールするものですが, CentOS ではこれを使用できません. (RHELは可能)
そのため, dnf コマンドを自動実行しているだけに過ぎない DNF-Automatic の upgrade-type:security は使用できない可能性が非常に高いです.