os:xenserver:autometer
目次
xenserver-automater
GitHubで公開されているxenserver-automaterを利用すると、テンプレートから仮想マシンを作成する際に任意のIPアドレスを設定することができる
なお、automaterはautomatorのtypoだと思われるが、元サイトでそのように記述されているのでそのままにしています。
※以下はCentOS 6.5用に書いていますのでご注意ください。
FreeBSD用に移植しましたので、FreeBSDの方はFreeBSDにxenserver-automatorを移植するを参照してください
knifeと組み合わせたりperlスクリプトと組み合わせることで、一気にVMをIP付きで作成できます
XenStoreの確認
XenStore を利用したパラメータの受け渡しができるか確認
Dom0
仮想マシンのUUIDを取得
xe vm-list name-label=xxxx
パラメータセット
xe vm-param-set uuid=仮想マシンのUUID xenstore-data:vm-data/ip=IPアドレス
パラメータ確認
xe vm-param-list uuid=仮想マシンのUUID | grep 'xenstore-data'
パラメータ削除
xe vm-param-remove uuid=仮想マシンのUUID param-name=xenstore-data param-key=vm-data/ip
DomU
再起動してからパラメータ参照
# xenstore-read vm-data/ip xx.xxx.xx.xxx
インストール
テンプレート用の元VM1)にインストールします。
xe-automator.conf
/etc/init/xe-automator.conf をCentOS用に変更
# xe automator description "XenServer Guest Configuration Automator" start on stopped rc RUNLEVEL=[2345] script /usr/sbin/xe-set-network /usr/sbin/xe-set-hostname end script
xe-set-hostname
ホスト名を設定すスクリプト /usr/sbin/xe-set-hostname をCentOS用に変更
#!/bin/bash XENSTOREREAD=`which xenstore-read` if [ -e $XENSTOREREAD ]; then NAME=`$XENSTOREREAD name` DOMAIN=`$XENSTOREREAD vm-data/dm` #change hostname [ "$NAME" = "" ] && exit 0 cp /etc/sysconfig/network /etc/sysconfig/network.ORG cat << EOF > /etc/sysconfig/network NETWORKING=yes HOSTNAME=$NAME EOF /bin/hostname $NAME #if domain info wasn't passed in then dont alter the hosts file [ "$DOMAIN" = "" ] && exit 0 # read passed in IP address if it exists IP=`$XENSTOREREAD vm-data/ip` # otherwise just use the ip address that the machine has already if [ $IP = "" ]; then IP=`ip addr list eth0 | grep "inet " | cut -d' ' -f6 | cut -d/ -f1`; fi # change hosts cat << EOF > /etc/hosts 127.0.0.1 localhost $IP $NAME.$DOMAIN $NAME EOF fi exit 0
xe-set-network
ネットワーク情報を設定するスクリプト /usr/sbin/xe-network をCentOS用に変更4)
#!/bin/bash XENSTOREREAD=`which xenstore-read` [ -x $XENSTOREREAD ] || exit 0 IP=`$XENSTOREREAD vm-data/ip` GW=`$XENSTOREREAD vm-data/gw` NM=`$XENSTOREREAD vm-data/nm` NS=`$XENSTOREREAD vm-data/ns` DM=`$XENSTOREREAD vm-data/dm` [ "$IP" = "" ] && exit 0 [ "$GW" = "" ] && exit 0 [ "$NM" = "" ] && exit 0 [ "$NS" = "" ] && exit 0 # eth0 cp /etc/sysconfig/network-scripts/ifcfg-eth0 /etc/sysconfig/network-scripts/ORG.ifcfg-eth0 cat << EOF > /etc/sysconfig/network-scripts/ifcfg-eth0 DEVICE="eth0" BOOTPROTO="static" #BROADCAST= DNS1="$NS" GATEWAY="$GW" #HWADDR= IPADDR="$IP" NETMASK="$NM" NM_CONTROLLED="yes" ONBOOT="yes" TYPE="Ethernet" #UUID= EOF # service restart service network restart exit 0
テンプレートの作成
Shutdownしてテンプレートを作成する。
以下のコマンドか、XenCenterから作成
xe vm-param-set uuid=仮想マシンのUUID is-a-template=true
テンプレートからVMの作成
ホスト5)で作業します
# xe vm-install template=テンプレートのUUID new-name-label=新VM名 OR # xe vm-install template=$(xe template-list name-label=テンプレート名 --minimal) new-name-label=新VM名 OR # xe vm-install template=テンプレート名 new-name-label=新VM名 UUIDが表示されます
まだ起動しません
IPなどのネットワーク情報を設定します
# xe vm-param-set uuid=表示された新VMのUUID xenstore-data:vm-data/ip=IPアドレス # xe vm-param-set uuid=表示された新VMのUUID xenstore-data:vm-data/gw=ゲートウェイ # xe vm-param-set uuid=表示された新VMのUUID xenstore-data:vm-data/nm=ネットマスク # xe vm-param-set uuid=表示された新VMのUUID xenstore-data:vm-data/ns=DNSサーバIP # xe vm-param-set uuid=表示された新VMのUUID xenstore-data:vm-data/dm=ドメイン名
仮想マシンを起動
# xe vm-start uuid=表示された新VMのUUID
仮想マシンにログインしてネットワーク情報を確認
# ifconfig eth0 Link encap:Ethernet HWaddr AA:AB:AC:BA:BB:BC inet addr:192.168.xxx.xxx Bcast:192.168.xxx.255 Mask:255.255.255.0 <略......> # hostname 新VM名
os/xenserver/autometer.txt · 最終更新: 2017/04/14 05:21 by 127.0.0.1