ユーザ用ツール

サイト用ツール


サイドバー

Index

はじめてのおつかい






DokuWiki整形記法


PlayGround



os:xenserver:autometer:xenauto-freebsd

FreeBSDにxenserver-automatorを移植する

VagrantとかPackerとかありますが、Xenではよさげなところでスナップショットを取ってテンプレート化すればそんなに困らない。でも起動時にIPを引き継ぐのは寂しいので、新しいVMを作成するときに新しいIPを指定したい。
xenserver-automatorなるものを利用すればできると分かったのですがLinux用…
「FreeBSDで使いたい」と言ったら、「言いだしっぺが実装するんじゃ」と言われましたので…

xenserver-automaterはLinux用でしたので、これをFreeBSDに移植します。

テンプレートとなる仮想マシンで以下の設定をします

起動スクリプトの設定

/etc/rc.confに以下の行を追加します

xe_auto_net_configure_enable="YES"

起動時に実行されるスクリプト

以下のファイルを /usr/local/etc/rc.d/ に配置します。1)

xe_auto_net_configure_enable
#!/bin/sh
#
# xe_auto_net_configure
#
# PROVIDE: xe_auto_net_configure
# REQUIRE: NETWORKING
 
 
. /etc/rc.subr
 
name="xe_auto_net_configure"
rcvar="xe_auto_net_configure_enable"
stop_cmd=":"
start_cmd="xe_auto_net_configure_start"
 
xe_auto_net_configure_start()
{
 
    /usr/local/sbin/xe-set-network
}
 
load_rc_config $name
run_rc_command "$1"

ネットワーク設定をするスクリプト

以下のファイルを /usr/local/sbin/ に配置します。2)

xe-set-network
#!/bin/sh
#
# xe-set-network
#
 
[ -e /usr/local/bin/xenstore-read ] || exit 0
 
NAME=`/usr/local/bin/xenstore-read name`
DOMAIN=`/usr/local/bin/xenstore-read vm-data/dm`
 
IP=`/usr/local/bin/xenstore-read vm-data/ip`
GW=`/usr/local/bin/xenstore-read vm-data/gw`
NM=`/usr/local/bin/xenstore-read vm-data/nm`
NS=`/usr/local/bin/xenstore-read vm-data/ns`
DM=`/usr/local/bin/xenstore-read vm-data/dm`
 
[ "$NAME" = "" ] && exit 0
[ "$IP" = "" ] && exit 0
[ "$GW" = "" ] && exit 0
[ "$NM" = "" ] && exit 0
[ "$NS" = "" ] && exit 0
 
# stoping network I/F
/usr/sbin/service netif stop
 
# change host
if [ "$DOMAIN" = "" ]; then 
  FULLHOST=$NAME
else
  FULLHOST=$NAME.$DOMAIN
fi
hostname $FULLHOST
/usr/sbin/sysrc hostname="$FULLHOST"
 
# change IP
/usr/sbin/sysrc ifconfig_xn0="inet $IP netmask $NM"
/usr/sbin/sysrc defaultrouter="$GW"
 
# change /etc/hosts
cp /etc/hosts /etc/hosts.`/bin/date +%Y%m%d-%H%M`
 
cat << EOF > /etc/hosts
127.0.0.1       localhost
$IP     $FULLHOST   $NAME
EOF
 
# change nameserver
/bin/cp /etc/resolv.conf /etc/resolv.conf.`/bin/date +%Y%m%d-%H%M`
 
/bin/cat << EOF > /etc/resolv.conf
search $DOMAIN
nameserver $NS
EOF
 
# restarting network start
/etc/netstart
 
# bootup script off
/usr/sbin/sysrc xe_auto_net_configure_enable="NO"

テンプレートの作成以降

テンプレートの作成以降は、Linux用の手順(テンプレートの作成以降)と同じです。

1) , 2)
実行できるようにPermissionの変更を忘れずに
os/xenserver/autometer/xenauto-freebsd.txt · 最終更新: 2017/04/14 14:21 (外部編集)