====== 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用の手順(テンプレートの作成以降)]]と同じです。