手当たり次第に書くんだ

飽きっぽいのは本能

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

関連する記事

unattended-upgrades は、APT のセキュリティ更新を自動適用するための仕組みです。Ubuntu 26.04 サーバーでは、手動更新で管理する範囲と、自動更新に任せる範囲を分けておくと、更新漏れと意図しない再起動を減らしやすくなります。

この記事では、20auto-upgrades50unattended-upgrades、除外パッケージ、自動再起動、dry-run、ログ確認、再起動要否を扱います。systemctl status unattended-upgrades.service だけでなく、APT timer、設定ファイル、ログを合わせて確認する点が重要です。

パッケージとサービスを確認する

まずパッケージ、サービス、APT 関連 timer の状態を確認します。自動更新は timer と設定ファイルの組み合わせで動くため、サービスだけで判断しないようにします。

dpkg -l unattended-upgrades apt-listchanges 2>/dev/null
systemctl status unattended-upgrades.service --no-pager
systemctl list-timers 'apt*' --all --no-pager

自動更新の入口を設定する

/etc/apt/apt.conf.d/20auto-upgrades で、パッケージリスト更新と自動更新を有効にします。

sudo tee /etc/apt/apt.conf.d/20auto-upgrades >/dev/null <<'EOF'
APT::Periodic::Update-Package-Lists "1";
APT::Periodic::Unattended-Upgrade "1";
APT::Periodic::AutocleanInterval "7";
EOF
apt-config dump | grep -E '^APT::Periodic'

自動適用する範囲を設定する

50unattended-upgrades では、自動適用する origin、除外パッケージ、自動再起動、通知などを設定します。まずはセキュリティ更新を中心に扱う方針が運用しやすいです。

sudo tee /etc/apt/apt.conf.d/50unattended-upgrades >/dev/null <<'EOF'
Unattended-Upgrade::Allowed-Origins {
"${distro_id}:${distro_codename}-security";
};
Unattended-Upgrade::Package-Blacklist {
};
Unattended-Upgrade::Automatic-Reboot "false";
Unattended-Upgrade::Automatic-Reboot-Time "04:00";
EOF
sudo unattended-upgrade --dry-run --debug

除外パッケージを指定する

Kubernetes、データベース、重要なミドルウェアなど、更新タイミングを個別に判断したいものは除外候補になります。ただし、除外したパッケージは更新漏れになりやすいため、理由と見直しタイミングを持たせます。

sudo tee /etc/apt/apt.conf.d/51unattended-upgrades-local >/dev/null <<'EOF'
Unattended-Upgrade::Package-Blacklist {
"kubelet";
"kubeadm";
"kubectl";
};
EOF
sudo unattended-upgrade --dry-run --debug

自動再起動の方針を決める

自動再起動は便利ですが、単体サーバーや状態を持つサービスでは影響が大きくなります。冗長化済みの環境、検証環境、単体本番サーバーで方針を分けます。

grep -R "Automatic-Reboot" /etc/apt/apt.conf.d/
test -f /var/run/reboot-required && cat /var/run/reboot-required || true
test -f /var/run/reboot-required.pkgs && cat /var/run/reboot-required.pkgs || true

dry-run で確認する

設定変更後は、実際に適用する前に dry-run で対象パッケージとログを確認します。

sudo unattended-upgrade --dry-run --debug
sudo tail -n 120 /var/log/unattended-upgrades/unattended-upgrades.log
sudo tail -n 120 /var/log/unattended-upgrades/unattended-upgrades-dpkg.log

ログを確認する

自動更新は夜間に動くことが多いため、ログ確認が重要です。更新されたパッケージ、保留されたパッケージ、エラー、再起動要否を確認します。

sudo ls -l /var/log/unattended-upgrades/
sudo grep -E 'Packages that will be upgraded|No packages found|ERROR|WARNING' /var/log/unattended-upgrades/unattended-upgrades.log | tail -n 80
journalctl -u unattended-upgrades.service --since '24 hours ago' --no-pager

APT timer を確認する

unattended-upgrades の実行タイミングは APT 関連 timer の影響を受けます。timer の状態と次回実行予定を確認します。

systemctl list-timers apt-daily.timer apt-daily-upgrade.timer --all --no-pager
systemctl status apt-daily.timer --no-pager
systemctl status apt-daily-upgrade.timer --no-pager

手動更新との役割を分ける

unattended-upgrades は、手動更新を不要にする仕組みではありません。自動適用の範囲、保留パッケージ、再起動、サービス確認は、手動運用と組み合わせます。

apt list --upgradable
apt-mark showhold
systemctl --failed --no-pager
journalctl -p warning..alert --since '24 hours ago' --no-pager

更新後の状態を確認する

自動更新後は、再起動要否、failed unit、ログを確認します。カーネルや重要ライブラリが更新された場合は、再起動計画も必要です。

test -f /var/run/reboot-required && cat /var/run/reboot-required || true
test -f /var/run/reboot-required.pkgs && cat /var/run/reboot-required.pkgs || true
systemctl --failed
journalctl -b -p err --no-pager

確認項目

  • 20auto-upgrades で自動更新が有効か。
  • 50unattended-upgrades で自動適用範囲が明確か。
  • 除外パッケージの理由と見直しタイミングがあるか。
  • 自動再起動を有効にするか無効にするか決めているか。
  • dry-run とログ確認を行っているか。
  • 再起動要否と failed unit を確認しているか。

まとめ

Ubuntu 26.04 の unattended-upgrades では、セキュリティ更新を継続しながら、除外パッケージ、自動再起動、ログ確認、手動更新との役割分担を明確にします。自動化する範囲を決めておくと、更新漏れと意図しない影響の両方を抑えやすくなります。

関連する記事
Ubuntu 26.04 unattended-upgrades の基本設定 – セキュリティ更新を自動適用する

コメントを残す

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

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

トップへ戻る