手当たり次第に書くんだ

飽きっぽいのは本能

Ubuntu 22.04 unattended-upgrades の設定 – セキュリティ更新を自動適用する

Ubuntu 22.04 では、unattended-upgrades によってセキュリティ更新を自動適用できます。手動で apt update / apt upgrade を実行する運用と、自動更新をどこまで許可するかは分けて考える必要があります。

この記事では、unattended-upgrades の基本、更新対象、通知、自動再起動、ログ確認、手動アップデートとの役割分担を整理します。

unattended-upgrades とは

unattended-upgrades は、APT の更新を自動実行するための仕組みです。Ubuntu では主にセキュリティ更新を自動適用する目的で使われます。

項目役割
20auto-upgradesパッケージ一覧更新と自動更新の周期を制御する
50unattended-upgrades自動更新の対象、通知、自動再起動などを制御する
/var/log/unattended-upgrades/自動更新の実行ログを確認する
/var/run/reboot-required再起動が必要か確認する

手動 apt upgrade との違い

手動アップデートは、運用者が更新対象を確認して実行する方式です。一方、unattended-upgrades は、設定された範囲の更新を自動で適用します。

サーバー運用では、セキュリティ更新は自動適用し、通常更新や大きな変更は手動で確認する、という分け方が現実的です。

方式向いている用途注意点
手動更新更新内容を確認して適用する定期的に運用者が実行する必要がある
自動更新セキュリティ更新を継続的に適用する再起動や通知の方針を決める必要がある
構成管理複数台の更新方針を揃える入力待ち、再起動、メンテナンス時間帯を設計する

現在の設定を確認する

まず自動更新が有効か確認します。

cat /etc/apt/apt.conf.d/20auto-upgrades

一般的には次のように設定されます。

APT::Periodic::Update-Package-Lists "1";
APT::Periodic::Unattended-Upgrade "1";

自動更新の対象を確認する

自動更新の対象は /etc/apt/apt.conf.d/50unattended-upgrades で確認します。Ubuntu のセキュリティ更新だけを対象にするのか、通常更新も含めるのかは運用方針によります。

grep -A20 'Allowed-Origins' /etc/apt/apt.conf.d/50unattended-upgrades

サーバー運用では、まずセキュリティ更新を中心に自動化し、通常更新は手動確認に残す方が無難です。通常更新まで自動化すると、サービス再起動や設定変更の影響を受ける可能性が高くなります。

通知を設定する

自動更新の結果をメールで受け取る場合は、メール送信できる環境が必要です。ローカル MTA、SMTP リレー、外部メールサービスなど、通知経路を先に整えます。

設定例です。宛先は環境に合わせて変更します。

sudo cp -a /etc/apt/apt.conf.d/50unattended-upgrades \
  /etc/apt/apt.conf.d/50unattended-upgrades.bak.$(date +%Y%m%d%H%M%S)

sudo tee /etc/apt/apt.conf.d/52unattended-upgrades-mail >/dev/null <<'EOF'
Unattended-Upgrade::Mail "admin@example.com";
Unattended-Upgrade::MailReport "on-change";
EOF

MailReport は通知頻度に関係します。すべて通知するのか、変更があったときだけ通知するのかは、運用のノイズ量を見て決めます。

自動再起動をどう扱うか

カーネル更新などでは再起動が必要になることがあります。unattended-upgrades には自動再起動設定もありますが、サーバー用途では慎重に扱います。

方針利点注意点
自動再起動しない予期しない停止を避けやすい再起動待ちを放置しない運用が必要
時間指定で自動再起動するセキュリティ更新を完了しやすいサービス影響とメンテナンス時間帯を決める必要がある
監視・構成管理から再起動する複数台の制御をしやすい運用設計が必要

自動再起動を有効にする場合の例です。

sudo tee /etc/apt/apt.conf.d/53unattended-upgrades-reboot >/dev/null <<'EOF'
Unattended-Upgrade::Automatic-Reboot "false";
Unattended-Upgrade::Automatic-Reboot-Time "04:00";
EOF

ここでは false のまま例示しています。実際に自動再起動を有効にする場合は、サービス影響、監視通知、バックアップ時間帯との重なりを確認してから判断します。

ログを確認する

自動更新が動いたかどうかはログで確認します。

sudo tail -n 100 /var/log/unattended-upgrades/unattended-upgrades.log
sudo tail -n 100 /var/log/apt/history.log

/var/log/apt/history.log では、手動実行と自動実行のコマンドラインが分かれます。/usr/bin/unattended-upgrade が出ていれば、自動更新による実行です。

再起動が必要か確認する

自動更新後も、再起動が必要な状態か確認します。

if [ -f /var/run/reboot-required ]; then
  cat /var/run/reboot-required
fi

if [ -f /var/run/reboot-required.pkgs ]; then
  cat /var/run/reboot-required.pkgs
fi

プロキシ環境での注意

プロキシ環境では、自動更新も APT のプロキシ設定に依存します。手動の apt update が通るだけでなく、タイマー実行時にも必要な設定が読み込まれるか確認します。

apt-config dump | grep -i proxy
systemctl list-timers | grep apt

まとめ

Ubuntu 22.04 の unattended-upgrades は、セキュリティ更新を自動適用するために有用です。ただし、何を自動更新するか、通知をどう受けるか、再起動をどう扱うかを決めないまま有効にすると、運用上の不安が残ります。

手動更新は内容確認、自動更新はセキュリティ更新の継続適用、構成管理は複数台の統制、というように役割を分けると扱いやすくなります。

参考
書籍
参考書籍

Advanced Ubuntu Administration and Management Best Practices

Ubuntu Server の運用項目を体系的に確認したい場合の参考書籍です。価格や在庫はリンク先で確認してください。

Amazon で見る

このリンクは Amazon アソシエイトリンクです。

関連記事

Ubuntu 22.04 unattended-upgrades の設定 – セキュリティ更新を自動適用する

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)

トップへ戻る