Назад | Перейти на главную страницу

Автоматический запуск KVM Guest после установки

Я пытаюсь установить гостевую систему rhel внутри хоста rhel с помощью kvm и автоматически запускать гостевую гостевую систему после завершения установки.

В файле кикстарта есть команда «reboot», которая должна указать RHEL перезапустить после установки.

сценарий находится в / root / install_machine, а переменные определены в верхней части сценария

virt-install \
--name=$name-$ip_short \
--arch=x86_64 \
--ram=$memory \
--os-type=linux \
--os-variant=virtio26 \
--hvm \
--connect=qemu:///system \
--network bridge:br0 \
--vcpus=$cpus \
--accelerate \
--autostart \
--disk path=/kvm/disks/$name-$ip_short.img,size=$disk_size \
--location $location \
--vnc \
-x "ks=$ks_file ksdevice=eth0 ip=$ip_long netmask=255.255.255.0 gateway=$gateway dns=8.8.8.8" 

Я вхожу в машину и запускаю скрипт

ssh -X root@virtual_server
/root/install_machine

открывается окно virt-viewer, я смотрю intall, смотрю, как он перезагружается, и он отлично работает.

Но если я вхожу в систему без графики, я получаю сообщение об ошибке «Не удается открыть дисплей» (что ожидается), затем система устанавливается, а затем выключается, и мне приходится запускать ее вручную.

ssh root@virtual_server
/root/install_machine

Starting install...
Retrieving file .treeinfo...
Retrieving file vmlinuz...
Retrieving file initrd.img...
Creating storage file test2-178.img
Creating domain...
Cannot open display:
Run 'virt-viewer --help' to see a full list of available command line options
Domain installation still in progress. You can reconnect to 
the console to complete the installation process.

Я также попытался запустить сценарий из cron, машина установлена, но остается в выключенном состоянии, и мне нужно вручную включить ее.

Есть ли какие-либо предложения по поводу того, что я могу попытаться установить и запустить без моего участия? Полагаю, я мог бы отслеживать процесс и запускать "virsh start $ name- $ ip_short", но это кажется хакерским. Похоже, он должен перезапуститься самостоятельно. Добавление --noautoconsole в virt-install тоже не помогает ...

возможно, не самое чистое решение, но это работает (с определениями, определенными в верхней части скрипта)

virsh destroy $name-$ip_short
virsh undefine $name-$ip_short
rm -fr /kvm/disks/$name-$ip_short.img

virt-install \
--name=$name-$ip_short \
--arch=x86_64 \
--ram=$memory \
--os-type=linux \
--os-variant=virtio26 \
--hvm \
--connect=qemu:///system \
--network bridge:br0 \
--vcpus=$cpus \
--accelerate \
--autostart \
--disk path=$disk_directory/$name-$ip_short.img,size=$disk_size \
--location http://$domain/$location_path \
--vnc \
--noautoconsole \
-x "ks=http://$domain/$ks_path ksdevice=eth0 ip=$ip_long netmask=255.255.255.0 gateway=$gateway dns=$dns"


finished="0";

while [ "$finished" = "0" ]; do
        sleep 5;
        if [ `virsh list --all | grep "running" | grep "$name-$ip_short" | wc -c` -eq 0 ];
        then
                #echo "setup finished, start vm $name-$ip_short"
                finished=1;
                virsh start $name-$ip_short
        fi
done