PR

[Linux] apt-get を自動実行させる(CUI編)

Ubuntu は活発な開発が続けられている。

このため、定期的にアップデートを確認するなどしないと、未適用のアップデートが驚くほど増えてしまう。しかし、多くのサーバーを管理するとなると面倒だし抜けも増えてしまいそう。

自動的に適用させる方法はないだろうか調べてみた。

スポンサードリンク

インストール

unattended-upgrades というもので実現できるらしいから、早速インストールする。

$ sudo apt-get update
$ sudo apt-get instal unattended-upgrades

※筆者環境では既にインストールされていた

設定

設定ファイルは次のファイルとのこと。

$ sudo vi /etc/apt/apt.conf.d/50unattended-upgrades

適用範囲の選択

/ Automatically upgrade packages from these (origin:archive) pairs
Unattended-Upgrade::Allowed-Origins {
        "${distro_id}:${distro_codename}-security";
//      "${distro_id}:${distro_codename}-updates";
//      "${distro_id}:${distro_codename}-proposed";
//      "${distro_id}:${distro_codename}-backports";
};

設定ファイルには、「セキュリティ」や「アップデート」など、その範囲を選択できるようだ。

セキュリティー関連くらいは勝手にアップデートして欲しいと思っていたのだけれど、設定を見る限り、すでに有効になっていたようだ。ということは、その溜まっていくアップデートというのは”通常のアップデート”だったらしい。

これを有効にするには「//      “${distro_id}:${distro_codename}-updates”;」のコメントアウトを外し、「”${distro_id}:${distro_codename}-updates”;」とすれば良い。

適用しないパッケージの設定

// List of packages to not update
Unattended-Upgrade::Package-Blacklist {
//      "vim";
//      "libc6";
//      "libc6-dev";
//      "libc6-i686";
};

特にVMwareServer2 などを利用している時に当てはまるかもしれないけれど、自動的にアップデートされると困ることがある。その場合は、上記のサンプルを参照しながら記述すれば良い。

※今回はVMwareServer2 が入っていないし、アップデートされて困るものはないので記述していない

メール通知設定

ここまで設定してきて気になったのは、「自動アップデートで問題が発生した場合」のこと。もちろん重要なサーバーなら外部監視もしているけれど、通知機能もあるらしいから設定してみることにした。

実行時にメール送信

// Send email to this address for problems or packages upgrades
// If empty or unset then no email is sent, make sure that you
// have a working mail setup on your system. A package that provides
// 'mailx' must be installed.
//Unattended-Upgrade::Mail "root@localhost";

設定ファイルの上記の部分がメール送信設定らしく、サンプルではroot@localhost 宛にメールを送信するらしい。

直接受け取りたい外部のメールアドレスを設定しても良いかもしれないが、Linux システムではメールエイリアスという機能があるので、有効にするだけで良いと思われる。

ここでは「//Unattended-Upgrade::Mail “root@localhost”;」のコメントアウトを外し、「Unattended-Upgrade::Mail “root@localhost”;」とした。

というのは、root 宛のメールは既に任意のメールアドレスに転送するように設定されているから、あちこち設定をばらまく必要はない。詳しくは*メールBOXがいっぱい*あたりを参照されたい。

エラー時のみメール送信

// Set this value to "true" to get emails only on errors. Default
// is to always send a mail if Unattended-Upgrade::Mail is set
//Unattended-Upgrade::MailOnlyOnError "true";

電子メールで「自動アップデートしたよ」と教えてくれるのは嬉しいかもしれないけれど、毎度毎度送られてくると確認を怠ってしまうかもしれない。そのような時はエラー時のみメールを受け取るように設定ればよい(たぶん)。

自動再起動

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

アップデートによって再起動を必要とすることがある。自動的に再起動するように設定することも可能だけれど、自動的に再起動されては困るので有効にはしていない。

# エラーor 再起動が必要なときだけ通知してくれる設定はないのかな・・?
# まだテスト中(Ubuntu 12.04 LTS 環境)なので間違いが含まれているかもしれない
# 参考文献にはさらに多くの様々な使用方法などが解説されている

参考文献

コメント