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"