Ubuntu 16.04 LTS でセキュリティーアップデートを自動適用するようにしてみる。

Linux

Ubuntu でセキュリティーアップデートを自動で適用して欲しかったので、自動アップデート周りの設定を確認してみました。


Ubuntu で自動アップデートを設定してみました。今回の環境は Ubuntu 16.04.1 LTS で、インストールした時から用意されていた設定ファイルを使って調整してみます。

もっとも、もしかすると Ubuntu 16.04.1 LTS では既定でセキュリティーアップデートの自動実行が設定されているようだったので、設定項目の確認みたいな感じになりましたけれど。

50unattended-upgrades を調整する

自動更新を設定するためのファイルは、大きく分けて /etc/apt/apt.conf.d/20auto-upgrades/etc/apt/apt.conf.d/50unattended-upgrades があるみたいですけど、自分の環境に前者はなかったので、今回は後者を使ってみることにしました。

アップデートの種類を指定

今回はセキュリティーアップデートだけを自動更新したかったので、そうなるように /etc/apt/apt.conf.d/50unattended-upgrades の内容を調整します。

Unattended-Upgrade::Allowed-Origins {
        "${distro_id}:${distro_codename}";
        "${distro_id}:${distro_codename}-security";
//      "${distro_id}:${distro_codename}-updates";
//      "${distro_id}:${distro_codename}-proposed";
//      "${distro_id}:${distro_codename}-backports";
};

自分の環境では最初から、セキュリティーアップデートの ${distro_id}:${distro_codename}-security が対象になっていて、通常のアップデートの ${distro_id}:${distro_codename}-updates はコメントアウトされていたので、これで大丈夫そうです。

自動再起動の設定

それと、アップデート後に必要なら再起動して欲しかったので、次の項目も調整します。

// Automatically reboot *WITHOUT CONFIRMATION*
//  if the file /var/run/reboot-required is found after the upgrade 
Unattended-Upgrade::Automatic-Reboot "true";

// If automatic reboot is enabled and needed, reboot at the specific
// time instead of immediately
//  Default: "now"
Unattended-Upgrade::Automatic-Reboot-Time "02:00";

既定ではどちらもコメントアウトされていたので Unattended-Upgrade::Automatic-Reboot で自動再起動を有効化して、Unattended-Upgrade::Automatic-Reboot-Time で再起動の実行タイミングを指定します。

10periodic を調整する

更新間隔についても調整します。こちらは /etc/apt/apt.conf.d/10periodic で設定されています。既定では APT::Periodic::Update-Package-Lists が "1" になっていたので、自動更新は有効そうです。

APT::Periodic::Update-Package-Lists "1";
APT::Periodic::Download-Upgradeable-Packages "0";
APT::Periodic::AutocleanInterval "0";

これらの設定の意味は、次の通りのようです。

項目 意味
APT::Periodic::Update-Package-Lists パッケージリストの更新頻度を日単位で指定します。0 を指定した場合は更新しません。
APT::Periodic::Download-Upgradeable-Packages パッケージをダウンロードする間隔を日単位で指定します。
APT::Periodic::AutocleanInterval 使われていないパッケージを削除するタイミングを日単位で指定します。0 を指定した場合は削除しません。

設定完了

これで、おそらく自動更新の設定は完了しました。SSH 接続した時のメッセージを見る限り、特に何かを再起動しなくても、セキュリティーアップデートを自動で行い、必要に応じて指定したタイミングで再起動してくれる様子でした。

動作の様子は、たぶん less /var/log/apt/history.log で確認できます。このログの中に Commandline: /usr/bin/unattended-upgrade という記載があるので、これがきっと自動で更新されたパッケージの記録です。