Posted at

FreeNASでスタートアップスクリプトを設定する方法

More than 1 year has passed since last update.


きっかけ

FreeNASにて、サーバ側でOpenVPN接続を実施し、

バックアップ先の領域をSambaマウントする案件がありました。

Sambaマウントの用途としては、Cronによる定期バックアップが主になります。

ただ要件として、万が一サーバの電源が落ち復電後に自動起動した際、

マウントまで自動で行うことが条件として上げられていました。


概要

サーバの環境は以下のとおりです。


- FreeNAS 9.3
- OpenVPN(pkg コマンドでインストールされるもの、version 2.3.6)


設定方法



  1. 起動スクリプトで実行することはできない

    当初、 rc.conf に起動スクリプトを記載して実行しておりました。

    しかし、この方法では

    「 Sambaのマウントが行えない 」

    起動完了後、sshやコンソールからrootでの実行でマウントできても、 rc.conf の中ではマウントできない状態に悩まされました。




  2. 「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/ に起動スクリプトを配置することで、設定をすることができました。



  3. スクリプト例


#!/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"