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、gateway、dnsはそのまま見た通りです。
まとめると、次のようになります。
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'
そんな感じで。