====== FreeBSDにxenserver-automatorを移植する ======
VagrantとかPackerとかありますが、Xenではよさげなところでスナップショットを取ってテンプレート化すればそんなに困らない。でも起動時にIPを引き継ぐのは寂しいので、新しいVMを作成するときに新しいIPを指定したい。\\
xenserver-automatorなるものを利用すればできると分かったのですがLinux用…\\
「FreeBSDで使いたい」と言ったら、**「言いだしっぺが実装するんじゃ」**と言われましたので…\\
[[os:xenserver:autometer]]はLinux用でしたので、これをFreeBSDに移植します。
**テンプレートとなる仮想マシンで以下の設定をします**
===== 起動スクリプトの設定 =====
/etc/rc.confに以下の行を追加します
xe_auto_net_configure_enable="YES"
===== 起動時に実行されるスクリプト =====
以下のファイルを /usr/local/etc/rc.d/ に配置します。((実行できるようにPermissionの変更を忘れずに))
#!/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/ に配置します。((実行できるようにPermissionの変更を忘れずに))
#!/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"
===== テンプレートの作成以降 =====
テンプレートの作成以降は、[[os:xenserver:autometer#テンプレートの作成|Linux用の手順(テンプレートの作成以降)]]と同じです。