Inicialização automática do KVM Guest após a instalação

2

Estou tentando instalar um convidado rhel dentro de um host rhel usando o kvm e fazer com que o guest rhel auto seja iniciado após a conclusão da instalação.

O arquivo de kickstart tem o comando "reboot" que deve informar ao RHEL para reiniciar após a instalação.

o script está em / root / install_machine, e as variáveis são definidas no topo do script

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" 

Eu entro na máquina e executo o script

ssh -X root@virtual_server
/root/install_machine

a janela do virt-viewer se abre, eu assisto o intall, assisto a reinicialização e ele roda muito bem.

Mas se eu fizer o login sem gráficos, recebo um erro "não é possível abrir o display" (o que é esperado), então o sistema é instalado e, em seguida, ele é desligado e eu tenho que iniciá-lo manualmente

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.

Eu também tentei executar o script de um cron, a máquina está instalada, mas é deixada no estado desligado e eu tenho que ativá-la manualmente.

Alguma sugestão do que eu posso tentar fazer com que isso seja instalado e iniciado sem a minha contribuição? Eu suponho que eu poderia monitorar o processo e executar "virsh start $ name- $ ip_short", mas isso parece hacky. Parece que deveria reiniciar por conta própria. Adicionar --noautoconsole ao virt-install não parece ajudar ...

    
por dan 04.05.2012 / 01:07

1 resposta

1

provavelmente não é a solução mais limpa, mas isso funciona (com as definições definidas no topo do script)

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
    
por 08.05.2012 / 00:18