2015/06/24

yum-cronでyum updateを自動化してみた

パッケージの脆弱性が発表された場合、運用顧客のサーバが該当しているとアップデートをかけて脆弱性には早め早めで対応する。最近だとglibc脆弱性(GHOST)が記憶に新しい(そこまで騒がなくても、という内容ではあったけど)。その場合は、もちろん該当するパッケージのみアップデートしてやる。ほかのパッケージをアップデートしてサービスが動かなくなったりしたら恐いわけで。

自宅環境の場合、正直にいうとパッケージ管理まであまり意識できていない。気づいたら都度あげる程度。そもそも自分で定期的にチェックして必要なパッケージを更新するなんて面倒くさい。ただ、それでも脆弱性のあるパッケージを放置しているほうがよろしくない。せめて、インターネットからアクセス可能なサーバは最新状態を維持しましょう、というのが今回の主旨。




yum-cronのインストール


そんなわけで、今回はyum upateをcronで定期実行してくれるyum-cronを導入してみた。

インストールはコマンド一発!


# yum install yum-cron

��略~

================================================================================
Package Arch Version Repository
Size
================================================================================
Installing:
yum-cron noarch 3.2.29-60.el6.centos base 42 k
Installing for dependencies:
yum-plugin-downloadonly noarch 1.1.30-30.el6 base 23 k

Transaction Summary
================================================================================
Install 2 Package(s)

��略~

依存パッケージも1つインストールされた。更新対象のパッケージに対してダウンロードのみ実施する、なオプションがあるのかな。









yum-cronの設定


関連する設定ファイルをみてみる。


# rpm -ql yum-cron
/etc/cron.daily/0yum.cron
/etc/rc.d/init.d/yum-cron
/etc/sysconfig/yum-cron
/etc/yum/yum-daily.yum
/etc/yum/yum-weekly.yum
/usr/share/doc/yum-cron-3.2.29
/usr/share/doc/yum-cron-3.2.29/COPYING
/usr/share/man/man8/yum-cron.8.gz

設定ファイル、スタートアップスクリプト、cron用スクリプト等。

設定ファイルは/etc/sysconfig/yum-cronとなるので、この中身を見てみる。




 cat /etc/sysconfig/yum-cron
# Pass any given paramter to yum, as run in all the scripts invoked
# by this package. Be aware that this is global, and yum is invoked in
# several modes by these scripts for which your own parameter might not
# be appropriate
YUM_PARAMETER=

# Don't install, just check (valid: yes|no)
CHECK_ONLY=no

# Check to see if you can reach the repos before updating (valid: yes|no)
CHECK_FIRST=no

# Don't install, just check and download (valid: yes|no)
# Implies CHECK_ONLY=yes (gotta check first to see what to download)
DOWNLOAD_ONLY=no

# Error level, practical range 0-10, 0 means print only critical errors which
# you must be told, 1 means print all errors, even ones that are not important
# Level 0 is the default
# ERROR_LEVEL=0

# Debug level, practical range 0-10, higher number means more output
# Level 1 is a useful level if you want to see what's been done and
# don't want to read /var/log/yum.log
# Level 0 is the default
# DEBUG_LEVEL=1

# randomwait is used by yum to wait random time
# default is 60 so yum waits random time from 1 to 60 minutes
# the value must not be zero
RANDOMWAIT="60"

# if MAILTO is set and the mail command is available, the mail command
# is used to deliver yum output

# by default MAILTO is unset, so crond mails the output by itself
# example: MAILTO=root
MAILTO=

# you may set SYSTEMNAME if you want your yum emails tagged differently
# default is output of hostname command
# this variable is used only if MAILTO is set too
#SYSTEMNAME=""

# you may set DAYS_OF_WEEK to the days of the week you want to run
# default is every day
#DAYS_OF_WEEK="0123456"

# which day should it do cleanup on? defaults to 0 (Sunday). If this day isn't in the
# DAYS_OF_WEEK above, it'll never happen
CLEANDAY="0"

# set to yes to make the yum-cron service to wait for transactions to complete
SERVICE_WAITS=yes

# set maximum time period (in seconds) for the yum-cron service to wait for
# transactions to complete. The default is 300 seconds (5 minutes)
SERVICE_WAIT_TIME=300

CHECK_ONLYとDOWNLOAD_ONLYの設定に応じて、更新はせずに更新可なパッケージを確認、またはダウンロードのみに留めることができるみたい。デフォルト設定のまま、更新まで実行させておく。冒頭の通り、逐次それを自分で確認して必要なものだけインストールするのは面倒この上ない。どうせ自宅環境だし、パッケージアップデートによって動かくなったサービスがあっても特に問題無い。

最後にyum-cronを起動して、chkconfigで自動起動を有効にする。


# /etc/rc.d/init.d/yum-cron start
Enabling nightly yum update: [ OK ]

# chkconfig yum-cron on

ps auxしてもそれらしきプロセスが存在しないので、デーモンプログラムでは無いみたい。

/var/log/yum.logにログが出力されるようなので、後日確認しよう。

あとは、メール通知させるくらいかなぁ。。。




0 件のコメント:

コメントを投稿