88171.net


Bacula on ReadyNAS Duo

ReadyNAS Duo上にBaculaを立てる、という非常にニッチな話題。ReadyNASの中の仕組みとかAdd-onとか全然詳しくないので、もし真似する場合はくれぐれもat your own riskで。

インストール

Add-onを入れる。はい、おしまい。

現時点ではバージョンが3.0.3と古いけど、試した限りDebian squeezeの5.0.2のfdとはちゃんと連携できてる。ただし互換性一覧には記載なし。逆はあるんだけど。

設定

基本的な手順はAdd-onのページにあるとおり。

/opt/rfw/etc/{bacula-*,bconsole}.conf とか、クライアントマシンの bacula-fd.conf をいじる。これはBaculaの一般的な設定と何も変わらないので、ぐぐれ。

/opt/rfw/etc/make_sqlite3_tables がSQLiteでカタログを作ってくれるので、デーモンを手動で起動すればとりあえず動く状態になる。

デーモンの自動起動

Add-onをインストールしっぱなしの状態では、デーモンが自動起動してこない。Frontviewから有効/無効を切り替えても、何も起こらない。 /etc/frontview/addons/bin/BACULA/*.sh あたりが怪しいものの、中身が相当やる気ない感じなので、仕方なく書き換える。

/etc/frontview/addons/bin/BACULA/start.sh:

/etc/frontview/addons/bin/BACULA/stop.sh

/etc/init.d/bacula-dir start
/etc/init.d/bacula-sd  start
/etc/init.d/bacula-fd  start

/etc/frontview/addons/bin/BACULA/stop.sh:

/etc/init.d/bacula-dir stop
/etc/init.d/bacula-sd  stop
/etc/init.d/bacula-fd  stop

あと running.sh も含めて、エラーチェックとかマジメにやりたければ、やればよいと思う。

メール通知設定をスマートに

サンプルではMessageリソースの設定が

mailcommand = "/opt/rfw/sbin/bsmtp -h localhost -f \"\(Bacula\) \<%r\>\" -s \"Bacula: %t %e of %c %l\" %r"
operatorcommand = "/opt/rfw/sbin/bsmtp -h localhost -f \"\(Bacula\) \<%r\>\" -s \"Bacula: Intervention needed for %j\" %r"
mail = root@localhost = all, !skipped
operator = root@localhost = mount

と、例によって bsmtp を使う設定になってるけど、

という少し哀しい感じなので、仕方なく手を入れる。

ラッパ作る

/opt/rfw/sbin/send-alert とか適当な名前で、適当にラッパスクリプトを書く。

test -f /frontview/bin/functions || exit 1
. /frontview/bin/functions

send_email_alert "$1" "`cat -`"

send_email_alert は、Frontviewがアラートを送るために使ってる関数。たぶん。詳しくは読め。

Messageリソースの設定を変える

たとえばこんな感じ。引数がサブジェクトだけになってスッキリ。

mailcommand = "/opt/rfw/sbin/send-alert \"Bacula: %t %e of %c %l\""
operatorcommand = "/opt/rfw/sbin/send-alert \"Bacula: Intervention needed for %j\""
mail = alert = all, !skipped
operator = alert = mount

mailとかoperatorに渡すアドレスは使わなくなるので、正直どんな文字列でもいい。


アラートメールに Date ヘッダが入ってないのが前々から気になっていたので、ちょろまかしてみた。

/frontview/bin/functions:

 90        email_date=$(date '+%a, %e %b %Y %H:%M:%S %z (%Z)')
 91        headers="Date: $email_date\nFrom: $email_from\nTo: $email_addr\n"