対象サーバについて
製品名 | OpenBlockS 600 |
OS(kernel ver) | Debian lenny(2.6.29) |
CPU | 600MHz(AMCC PowerPC 405EX) |
メモリ | 1GB(DDR2 SDRAM) |
ストレージ | 8GB(Compact Flash) |
cron-aptのインストール
www:~# aptitude install cron-apt 以下の新規パッケージがインストールされます: cron-apt
cron-aptの基本設定
編集するファイル:/etc/cron-apt/config
# APTCOMMAND=/usr/bin/aptitude APTCOMMAND=/usr/bin/aptitude # ACTIONDIR="/etc/cron-apt/action.d" ACTIONDIR="/etc/cron-apt/action.d" # ERROR="/var/log/cron-apt/error" ERROR="/var/log/cron-apt/error" # TEMP="/var/log/cron-apt/temp" TEMP="/var/log/cron-apt/temp" # LOG="/var/log/cron-apt/log" LOG="/var/log/cron-apt/log" # SYSLOGON="upgrade" SYSLOGON="always" # DEBUG="output" DEBUG="verbose" # MAILTO="root" MAILTO="root" # MAILON="error" MAILON="always" # OPTIONS="-o quiet=1 -o Dir::Etc::SourceList=/etc/apt/security.sources.list" OPTIONS="-o quiet=1 -o Dir::Etc::SourceList=/etc/apt/security.sources.list" # HOSTNAME="www"
APTCOMMAND,ACTIONDIR,ERROR,TEMP,LOG,MAILTO,OPTIONSはコメントアウトを外すのみ、SYSLOGON,DEBUG,MAILONは上記の通り修正します。
HOSTNAMEを付けると動作しなかったためコメントアウトしました。原因は不明です。ご存知の方がいたら教えて頂けると助かります。
ググっても使用方法が出てこないものについてはmanualで調べることにします。
マニュアルは以下にありました。
gzip -dc /usr/share/doc/cron-apt/examples/config.gz | less
- APTCOMMAND=/usr/bin/aptitude
- パッケージのアップデートに/usr/bin/aptitudeを使用
- ACTIONDIR=”/etc/cron-apt/action.d”
- アクションの定義ファイルを保存するディレクトリを指定
- ERROR,TEMP,LOG
- ログの出力先を指定
- SYSLOGON=”always”
- いつSYSLOGを出力するかの指定です。とりあえず常に出力するようにalwaysを指定します。
(manualより)
# error (syslog on error runs)
# upgrade (when packages is upgraded)
# changes (syslog when change in output from an action)
# output (syslog when output is generated)
# always (always syslog)
# (else never syslog) - DEBUG=”verbose”
- 上記のSYSLOG設定との違いが不明瞭ですが、とりあえず全てのログを出力するverboseにしておきます。
(manualより)
# verbose (log everything)
# always (always log)
# upgrade (when packages is upgraded)
# changes (log when change in output from an action)
# output (log when output is generated)
# error (log error runs only)
# (else log nothing) - MAILTO=”root”
- メール送信先
- MAILON=”always”
- いつメールを送付するかの指定です。とりあえず常にメール送付するようにalwaysを指定しておきます。
(manualより)
# When to send email about the cron-apt results.
# error (send mail on error runs)
# upgrade (when packages are upgraded)
# changes (mail when change in output from an action)
# output (send mail when output is generated)
# always (always send mail)
# (else never send mail) - OPTIONS=”-o quiet=1 -o Dir::Etc::SourceList=/etc/apt/security.sources.list”
- /etc/apt/sources.listの中からsecurity updateのみを実施するように、別途security.sources.listを作成して指定することにします。
(manualより)
# General apt options that will be passed to all APTCOMMAND calls.
# Use “-o quiet” instead of “-q” for aptitude compatibility.
# OPTIONS=”-o quiet=1″
# You can for example add an alternative sources.list file here.
# OPTIONS=”-o quiet=1 -o Dir::Etc::SourceList=/etc/apt/security.sources.list”
# If you want to allow unauthenticated and untrusted packages add the
# following to your options directive.
# OPTIONS=”-o quiet=1 -o APT::Get::AllowUnauthenticated=true -o aptitude::Cmdline::ignore-trust-violations=yes”
cron-aptの追加設定
セキュリティアップデートのみを実施するための設定
編集するファイル:/etc/apt/security.sources.list
deb http://security.debian.org lenny/updates main contrib non-free deb-src http://security.debian.org lenny/updates main contrib non-free
safe-upgradeを更新まで実施するための設定
編集するファイル:/etc/cron-apt/action.d/3-download
autoclean -y safe-upgrade -y -o APT::Get::Show-Upgraded=true
→dist-upgradeをsafe-upgradeに書き換えます。-dを付けるとdownloadのみになります(上記は更新まで実施)。
動作確認
www:~# vi /etc/cron.d/cron-apt # # Regular cron jobs for the cron-apt package # # Every night at 4 o'clock. * 15 * * * root test -x /usr/sbin/cron-apt && /usr/sbin/cron-apt
現在時刻(15時15分)から毎分cron-aptを実行するようにして1分後にログを確認する。
open:~# less /var/log/cron-apt/log CRON-APT RUN [/etc/cron-apt/config]: Sun Jan 24 15:16:01 JST 2010 CRON-APT SLEEP: 704, Sun Jan 24 15:27:45 JST 2010 CRON-APT ACTION: 0-update CRON-APT LINE: /usr/bin/aptitude update -o quiet=2 Reading package lists... CRON-APT ACTION: 3-download CRON-APT LINE: /usr/bin/aptitude autoclean -y Reading package lists... Building dependency tree... Reading state information... Reading extended state information... Initializing package states... Reading task descriptions... Freed 0B of disk space CRON-APT LINE: /usr/bin/aptitude safe-upgrade -y -o APT::Get::Show-Upgraded=true Reading package lists... Building dependency tree... Reading state information... Reading extended state information... Initializing package states... Reading task descriptions... No packages will be installed, upgraded, or removed. 0 packages upgraded, 0 newly installed, 0 to remove and 0 not upgraded. Need to get 0B of archives. After unpacking 0B will be used. Reading package lists... Building dependency tree... Reading state information... Reading extended state information... Initializing package states... Reading task descriptions...
syslogは設定どおり動作しているように見えます。Mailも受信できていました。
たくさん出ても困るので、upgradeした時のみ出力させるように変更します。
www:~# vi /etc/cron-apt/config SYSLOGON="error" MAILON="upgrade"
syslogはerrorのみ、mail通知はupgrade時のみとします。
次に、cronを毎日朝5:10に実行するように修正します。
www:~# vi /etc/cron.d/cron-apt # # Regular cron jobs for the cron-apt package # # Every night at 4 o'clock. 10 5 * * * root test -x /usr/sbin/cron-apt && /usr/sbin/cron-apt
最後に、upgradeを実行した際は、個人メール宛にも送付するようにprocmailの修正を実施します(Procmailの設定が済んでいることが前提になります。)
www:~# exit logout user001@www:~$ vi .procmailrc SHELL=/bin/bash PATH=/bin:/usr/bin:/usr/sbin # procmailが使用するパス LOGFILE=$HOME/procmail.log # ログファイル名 DROPPRIVS=yes #LOCKFILE=$HOME/.lockfile # ロックファイル名 MAILDIR=$HOME/Maildir/ # メール格納場所 DEFAULT=$MAILDIR # レシピにマッチしなかった場合の格納場所 ### Subject:に"test"が含まれていた場合はカーボンコピーして ### (メールボックスに受信メールを残す) ### keitai@xxx.com と pc@xxx.comに転送 :0 c * ^Subject: .*CRON-APT.* ! pc@xxx.com