Freenas

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"