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"