理想未来ってなんやねん

娘可愛い。お父さん頑張る。

DHCPを使わないCentOSゲストの自動インストール

KVMの続き。
まずはおさらいですが、virt-installを使ったKickStartによるゲストOSのインストールは以下のようなコマンドで行えます。

virt-install \
 --connect qemu:///system \
 -n vm01 \
 -r 512 \
 --vcpus=2 \
 -f /var/lib/libvirt/images/vm01.img \
 -s 12 \
 --nographics \
 --os-type linux \
 --os-variant=virtio26 \
 --accelerate \
 --network=bridge:br0 \
 --hvm \
 --location='http://ftp.riken.jp/Linux/centos/5.4/os/x86_64' \
 --extra-args='ks=http://(ks-config-server)/(path)/ks.cfg console=tty0 console=ttyS0,115200n8'

上記はDHCP環境下ではうまくのですが、DHCP環境以外ではIPを設定する為の設定画面が表示されます。


locationで指定したパスからbootイメージをロードする段階はホストOSが行いますが、Kickstartファイルをロードする時点ではゲストOSが起動した後となる為、ゲストOSがロードします。


Kickstartファイルにネットワーク設定を記述していても、Kickstartファイルをロードする前の段階の為、設定が行われません。
その為、IPを設定する為の設定画面が表示されます。


これを回避するには起動段階でIPを指定する必要があり、--extra-argsに次のオプションを加えます。

ksdevice=eth0 ip=xxx.xxx.xxx.xxx netmask=255.255.255.xxx gateway=xxx.xxx.xxx.xxx dns=xxx.xxx.xxx.xxx

ksdeviceでNICを指定します。1ポートしかない場合は指定は不要ですが、複数存在する場合は指定が必要です。
ip、netmask、gatewaydnsはそのまま見た通りです。

まとめると、次のようになります。

virt-install \
 --connect qemu:///system \
 -n vm01 \
 -r 512 \
 --vcpus=2 \
 -f /var/lib/libvirt/images/vm01.img \
 -s 12 \
 --nographics \
 --os-type linux \
 --os-variant=virtio26 \
 --accelerate \
 --network=bridge:br0 \
 --hvm \
 --location='http://ftp.riken.jp/Linux/centos/5.4/os/x86_64' \
 --extra-args='ks=http://(ks-config-server)/(path)/ks.cfg ksdevice=eth0 ip=xxx.xxx.xxx.xxx netmask=255.255.255.xxx gateway=xxx.xxx.xxx.xxx dns=xxx.xxx.xxx.xxx console=tty0 console=ttyS0,115200n8'


そんな感じで。