きっかけ
FreeNASにて、サーバ側でOpenVPN接続を実施し、
バックアップ先の領域をSambaマウントする案件がありました。
Sambaマウントの用途としては、Cronによる定期バックアップが主になります。
ただ要件として、万が一サーバの電源が落ち復電後に自動起動した際、
マウントまで自動で行うことが条件として上げられていました。
概要
サーバの環境は以下のとおりです。
- FreeNAS 9.3
- OpenVPN(pkg コマンドでインストールされるもの、version 2.3.6)
設定方法
-
起動スクリプトで実行することはできない
当初、
rc.conf
に起動スクリプトを記載して実行しておりました。
しかし、この方法では「 Sambaのマウントが行えない 」
起動完了後、sshやコンソールからrootでの実行でマウントできても、
rc.conf
の中ではマウントできない状態に悩まされました。 -
「Init/Shutdown Script」という起動スクリプトの存在
FreeNAS 9.3 では、「Init/Shutdown Script」というものが利用できるようになっていました。
これは、起動時・終了時に任意のコマンドやスクリプトを実行できる、というものです。FreeNASのWeb GUI画面では、
システム -> Init/Shutdown Script -> Init/Shutdown Scriptの追加 で設定することができます。また、今回はCUIにて操作をしていましたが、
/conf/base/etc/ix.rc.d/
に起動スクリプトを配置することで、設定をすることができました。 -
スクリプト例
# !/bin/sh
#
# $FreeBSD$
#
# PROVIDE: ix-postinit
# REQUIRE: LOGIN
# BEFORE: cron
. /etc/rc.subr
mount_start()
{
while :
do
/sbin/ping -c 10 10.8.0.1 > /dev/null
status=$?
if [ $status -eq 0 ] ; then
/usr/sbin/mount_smbfs -N -I 10.8.0.1 -g (ユーザのGID) -u (ユーザのUID) //(Sambaユーザ名)@10.8.0.1/workgroup /mnt/(マウントポイント)
break
fi
done
}
name="ix-mount"
start_cmd='mount_start'
stop_cmd=':'
load_rc_config $name
run_rc_command "$1"