vApp自動起動

Citrix HypervisorでvAppを使うとVM(仮想マシン)をグループ化し、複数のVMを指定した順番で起動したりシャットダウンしたりできるようになりますが、vAppには自動起動が備わっていません。

vAppの作成そのものはXenCenterを使って上図の画面で簡単に設定できます。しかし、vAppの自動起動の設定項目がXenCenterに見当たりません。

vAppを手動で起動する場合、以下のようにXenCenterで別のマシンからHypervisorに接続してから「Start vApp」をクリックする必要があり、少々面倒です。

そこで、vAppを自動起動するためにスクリプトの力を借ります。

HypervisorにTeraTermを使ってSSH接続し、以下の内容でスクリプトを作成します。

#AutoStart XenServer vApps with the tag autostart in their description
# Script originally created by Raido Consultants - http://www.raido.be
# Script updated and shared by E.Y. Barthel - https://www.virtues.it
TAG="autostart"

# helper function
function xe_param()
{
    PARAM=$1
    while read DATA; do
        LINE=$(echo $DATA | egrep "$PARAM")
        if [ $? -eq 0 ]; then
            echo "$LINE" | awk 'BEGIN{FS=": "}{print $2}'
        fi
    done
} # Get all Applicances
sleep 20
VAPPS=$(xe appliance-list | xe_param uuid)
for VAPP in $VAPPS
do
    # debug info
    # echo "Esther's AutoStart : Checking vApp $VAPP"
    VAPP_TAGS="$(xe appliance-param-get uuid=$VAPP param-name=name-description)"
    if [[ $VAPP_TAGS == *$TAG* ]]; then
        # action info:
        echo "starting vApp $VAPP";
        xe appliance-start uuid=$VAPP;
        sleep 20
    fi
done

(引用元:https://www.virtues.it/2014/12/step-by-step-guide-automatically-start-a-vapp-on-xenserver/

このスクリプトを以下のパス、ファイル名で保存します。

/opt/autostartvapps.sh

次にviエディタでrc.localを編集し、先ほどのスクリプトが電源投入時に自動実行されるようにします。

vi /etc/rc.d/rc.local

以下の内容を追記して保存します。余裕を見て、40秒待機してからスクリプトを実行するようにしています。

sleep 40

sh /opt/autostartvapps.sh

最後にパーミッションを調整して終了です。

chmod u+x /etc/rc.d/rc.local

これで、次回からvAppが自動起動されるようになりました。