cron-aptの設定

投稿者: | 2010年8月15日
Pocket

対象サーバについて

製品名 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
Pocket

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です