[Linux][CentOS] yum-cron でアップデート対象のパッケージをメール通知する
ちょっと遅めの夏休みをもらって佐渡島に行ってきました nakamura です。割りと首都圏からも行きやすいしいい所でしたよ!
サーバの運用・管理をしていて避けては通れないのがパッケージのバグフィックスやセキュリティパッチの適用だと思います。今日は CentOS を使っている際にその辺りをある程度自動化して効率よく運用する方法をひとつご紹介します。
メールの転送先を設定
yum-cron は root ユーザの cron ジョブとして実行されるので、root ユーザ宛てメールの転送先を設定します。ちなみに以下は MTA に Postfix を使っている場合の設定例です。
aliases ファイルをエディタで開いて、
vim /etc/aliases
最下行にある root の転送先を書き換えます。
# Person who should get root's mail
root: admin@example.com
aliases への変更をバイナリファイルに反映。
newaliases
Postfix をリロードします。
/etc/init.d/postfix reload
yum-cron のインストール、設定
とりあえずインストール。
yum install yum-cron
設定ファイルは /etc/sysconfig/yum-cron です。エディタで開いて以下のように修正します。
# Don't install, just check (valid: yes|no)
CHECK_ONLY=yes
# Don't install, just check and download (valid: yes|no)
# Implies CHECK_ONLY=yes (gotta check first to see what to download)
DOWNLOAD_ONLY=yes
上記の設定によって、アップデート対象の確認・ダウンロードのみを行うようになります。
補足
CHECK_ONLY=no, DOWNLOAD_ONLY=no にするとメール通知もなく自動でアップデートされるようになります。一見するとこっちの方が楽でいいじゃん!と思いますが CentOS の場合、例えば MySQL のアップデートを行うと同時に再起動まで勝手に行われてしまい、設定ファイルに不備があろうものなら「夜中に yum-cron が走ってから誰かが出社するまで MySQL 落ちっぱなし・・・!」なんて事もあり得るので、基本的に僕はどちらも yes にしています。(その代わり社内サーバなどリスクの小さいサーバでは no にして手間を省いてます)
設定を終えたら、yum-cron を起動。自動起動に追加しておきましょう。
/etc/init.d/yum-cron start
chkconfig yum-cron on
以上で設定は終了です!何かしらのアップデートがリリースされると 1 日 1 回、以下のようなメールが来るはずです。
/etc/cron.daily/yum.cron:
New updates available for host example.com
perl-Compress-Raw-Bzip2.i386 2.037-1.el5.rf rpmforge
perl-Compress-Raw-Zlib.i386 2.037-1.el5.rf rpmforge
Updates downloaded, use "yum -C update" manually to install them.
ちなみに
yum-cron とは別に yum-updatesd というパッケージがあり、これも yum-cron とほとんど同じことができるのですが、1 日 1 回の更新チェックの為だけにプロセスを常駐させておくというのが何となく精神衛生上イヤで僕は使っていません。リソースに余裕があるという方はお好みで使い分けてみてください。