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
を使う設定になってるけど、
- OP25Bな環境だと当然送れませんよね
- というかFrontviewのアラート送信設定ガン無視なんですね
という少し哀しい感じなので、仕方なく手を入れる。
ラッパ作る
/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"