[XenServer 6.1.0] 仮想マシン作成と、CentOS6.4、xs-tools インストールを自動化


Create: 2013/08/09
LastUpdate: 2013/08/09

XenServerの仮想マシン生成から、CentOS6.4とxs-toolsのインストールまでを自動化して、スクリプトを1回実行すれば、最小構成のCentOS6.4の仮想マシンができあがるようにしてみます。

仮想マシンの生成には、xe コマンドを使用し、CentOS6.4 と xs-tools のインストールには、kickstart を使用します。

それぞれ、以下のページが参考になります。

今回、kickstart を使用して、OSをネットワークインストールしますが、インターネット上のOSイメージは使用せず、内部ネット―ワークに用意したWEBサーバを使用します。

このWEBサーバには、kickstart 用のパラメータファイルと、CentOS6.4(32bit)の Disk1 を設置します。

今回作成する仮想マシンの構成は、以下のとおり。
  • ディスク: 1個  ※パーティションは自動生成
  • NIC: 1個 ※固定IPアドレス
  • メモリ: 512Mバイト
  • CPU: 1個
  • DVDデバイス: 1個

今回インストールするOSの設定は以下のとおり。
  • 言語、キーボード: 日本語環境
  • タイムゾーン: Aisa/Tokyo
  • ファイヤーウォール: 無効
  • SElinux: 無効
  • rootパスワード: password
  • パッケージ: 最小構成
  • 追加設定: xs-tools のインストール

以下に手順を紹介します。

1.kickstart 用のWEBサーバの用意


Kickstart 時にインストーラがアクセスするWEBサーバ(CentOS)を用意します。
WEBサーバの IPアドレスは、"192.168.1.88" とします。

1.1.Apache のインストール


yum コマンドで Apache をインストールします。
# yum install httpd
Apacheは、デフォルトの設定でOKです。
以下のようにして httpd サービスを起動します。
# service httpd start

1.2.CentOS6.4 の Disk1 設置


CentOSのWebサイトから CentOS6.4(32ビット)のDisk1の isoイメージをダウンロードします。
# cd /var/www/html
# curl -L -o ./xxx.iso http://ftp.jaist.ac.jp/pub/Linux/CentOS/6.4/isos/i386/CentOS-6.4-i386-bin-DVD1.iso
ディレクトリを作成して、isoイメージをマウントします。
# cd /var/www/html
# mkdir disk1
# mount -o loop /root/xxx.iso ./disk1

1.3.kickstart 用の パラメータファイル作成


以下のファイル名で、kickstart 用のパラメータファイルを作成します。
  • /var/www/html/ks.cfg
内容は、以下のとおり。
通常、OSインストール時に指定するキーボードなどの設定値を、あらかじめ、このファイルに定義しておきます。
各パラメータの説明は、「Redhat Enterprise Linux 6 インストールガイド」を参照してください。
# Kickstart file XenVM for CentOS6.4
#version=DEVEL

install
url --url=http://192.168.1.88/disk1/

# locale
lang ja_JP.UTF-8
keyboard jp106

# text mode install
text

# network
network --onboot yes --device eth0 --bootproto static --ip 192.168.1.99 --netmask 255.255.255.0 --gateway 192.168.1.1 --noipv6 --nameserver 192.168.1.110

# account
rootpw  --iscrypted $6$IR2ijrgVSHyYPUiB$wshT3X.8ZBIQpZ91UiuUg3IbYFPIEcrG3aCe0L1zvQulG0KomEzJaUbXXVZsh7qaqga.dmXstOkXDvMxIyK2o1
authconfig --enableshadow --passalgo=sha512

# firewall
services --disabled iptables,ip6tables
firewall --disabled

# selinux
selinux --disabled

# timezone
timezone --utc Asia/Tokyo

# boot
bootloader --location=mbr --driveorder=xvda --append="crashkernel=auto console=hvc0 rhgb quiet"

# partition clear
zerombr
ignoredisk --only-use=xvda
clearpart --all --drives=xvda

# partition create
###part /boot --fstype=ext4 --size=500 --ondisk=xvda
###part pv.202002 --grow --size=1
###volgroup VolGroup --pesize=4096 pv.202002
###logvol / --fstype=ext4 --name=lv_root --vgname=VolGroup --grow --size=1024 --maxsize=51200
###logvol swap --name=lv_swap --vgname=VolGroup --grow --size=1024 --maxsize=1024
autopart

# reboot
reboot
firstboot --disable

# install package
%packages --nobase
@core

# install xen-tools
%post --log=/root/ks_post.log
mount -t iso9660 /dev/cdrom /media
/media/Linux/install.sh -n
umount /media

上記スクリプトのポイントを以下に記します。
  • 赤字部分のパラメータですが、これを指定しないと、kickstart中にディスクを初期化するか確認を求められるので、インストール処理が途中でとまってしまいます。( このページを参照 )
  • xs-tools のインストール処理は、%post に定義し、OSインストール完了後に実施します。%post で定義したコマンドの実行結果は、/root/ks_post.log に保存します。
  • パーティションの構成は、autopart を指定して、インストーラに任せます。
あとは、Apache から参照できるように オーナを変更します。
# chown -R apache.apache /var/www/html

2.仮想マシン生成用スクリプトの用意


XenServerホストに root ユーザログインして作業します。
以下のファイル名で、仮想マシンを作成するスクリプトを作成します。
  • /root/kickstart.sh
内容は以下のとおり。
xe コマンドで仮想マシンを生成して、起動します。
#!/bin/bash

VM_NAME=kickstart
KS_CFG=http://192.168.1.88/ks.cfg
KS_REPO=http://192.168.1.88/disk1/

# Template
UUID=`xe vm-install template="CentOS 6 (32-bit)" new-name-label=${VM_NAME}`

# Parameter
xe vm-param-set uuid=${UUID} PV-args="ks=${KS_CFG} ksdevice=eth0"
xe vm-param-set uuid=${UUID} other-config:install-repository=${KS_REPO}

# Memory
MEMSZ=$((1024*1024*512))
xe vm-memory-limits-set uuid=${UUID} dynamic-min=${MEMSZ} dynamic-max=${MEMSZ} static-max=${MEMSZ} static-min=${MEMSZ}

# Network
N_UUID=`xe network-list bridge=xenbr0 --minimal`
xe vif-create vm-uuid=${UUID} network-uuid=${N_UUID} mac=random device=0

# DVD
xe vm-cd-add cd-name=xs-tools.iso vm=${VM_NAME} device=1

# VM START
xe vm-start uuid=${UUID}

上記スクリプトのポイントを以下に記します。
  • XenServer付属テンプレートの "CentOS 6 (32-bit)" から、"kickstart" という名称で新しい仮想マシンを生成します。
  • kickstart 用のパラメータを設定します。
  • メモリは、テンプレートのデフォルトが1Gですが、試しに 512Mに設定してみます。
  • デフォルトだと、NICが無いので、NICを追加します。
  • DVDドライブに "xs-tools.iso"をセットします。
  • 仮想マシンを起動すれば、自動的に kickstart が開始されます。
スクリプトが作成できたら、実行権限を与えます。
# chmod +x /root/kickstart.sh

3.動作確認


XenServerホストに root ユーザでログインして、上記2のスクリプトを実行します。
# ./kickstart.sh
これで、仮想マシンが生成されて、起動します。
このとき、XenCenter のコンソールを開くと、kickstart 処理中の状況が、下図のように見ることができます。



kickstart が終了すると、自動的に仮想マシンがリブートされます。
リブート完了後、下図のように仮想マシンが”最適化”されていれば、xs-toos が正常にインストールされています。



以上で、仮想マシンの作成完了です。
これで、スクリプトを1回実行するだけで、CentOS6.4の仮想マシンが作れるようになりました。