KVM E Kickstart - Não desligando

1

Estou criando uma ferramenta para me ajudar a gerenciar meu servidor KVM. Ele gera um comando que usa um arquivo de kickstart para instalar automaticamente os convidados do KVM para mim. Abaixo está um exemplo de comando que ele gerou para instalar automaticamente um convidado do Ubuntu 16.04.

virt-install --connect qemu:///system  \
--nographics \
--os-type linux \
--accelerate \
--hvm \
--network network=default,model=virtio \
--name testing124 \
--os-variant ubuntu16.04 \
--ram 1024 \
--vcpus 2 \
--location http://us.archive.ubuntu.com/ubuntu/dists/xenial/main/installer-amd64/ \
--disk /home/stuart/code-copy/vms/testing124/disk.raw,bus=virtio,format=raw,cache=writethrough \
--extra-args "console=ttyS0 ks=http://pastebin.com/raw/6TznVUuN"

Eu quero que este comando seja executado de dentro da ferramenta com um comando exec, em vez de imprimi-lo e exigir que eu copie e cole manualmente para executá-lo, como fiz até agora. O problema é que o comando nunca será concluído porque o virt-console sempre permanece aberto. Por padrão, os convidados serão reiniciados e o console conectado. Se eu especificar shutdown em vez de reboot , a instalação ficará presa nesta etapa:

Seeuespecificarhaltoupoweroffemvezdeshutdown,oconvidadoserádesligado,masoconsoleficarápenduradoemumatelaembranco.Virshtambémmostraoconvidadocomorunningsevocêexecutarvirshlist--all

QuaismudançaseuprecisofazernoarquivodecomandooukickstartparainstalaçãodoguestKVMparafinalizarnormalmente?

Apêndices

Oarquivodekickstartécopiadoparabaixo,casooreferenciadomudeouseperca.

#Ubuntuserver64bitexamplekickstart/seedwithshutdown#Systemlanguage#langen_USlangen_GB#Languagemodulestoinstall#langsupporten_USlangsupporten_GB#Systemkeyboardkeyboardus#Systemmousemouse#Systemtimezone#timezoneAmerica/Chicagotimezone--utcAmerica/Chicago#Rootpasswordrootpw--disabled#Initialuseruserubuntu--fullname"" --password ubuntu
preseed user-setup/allow-password-weak boolean true

# pick only one of these actions to take after installation completed
#reboot
#shutdown
#halt
poweroff

# Use text mode install
text

# Install OS instead of upgrade
install

# Use http installation media
url --url http://archive.ubuntu.com/ubuntu

# System bootloader configuration
bootloader --location=mbr

# Clear the Master Boot Record
zerombr yes

# Partition clearing information
clearpart --all --initlabel

# Partition setup
part / --fstype ext4 --size 1 --grow
#part /boot --fstype ext2 --size 200 --asprimary
#part swap  --size 1024
#part pv.01 --size 1 --grow
#volgroup rootvg pv.01
#logvol / --fstype ext4 --vgname=rootvg --size=1 --grow --name=rootvol
#preseed partman-lvm/confirm_nooverwrite boolean true

# If you have swap commented out/not specified then you need to have this line.
preseed --owner partman-basicfilesystems partman-basicfilesystems/no_swap boolean false

# System authorization infomation
auth  --useshadow  --enablemd5

# Firewall configuration
firewall --disabled

# Do not configure the X Window System
skipx

# Make sure to install the acpid package so that virsh commands such
# as virsh shutdown will take effect
%packages
@ubuntu-server
@openssh-server
@acpid
    
por Programster 12.03.2017 / 13:52

2 respostas

1

Acontece que é para isso que a opção --noautoconsole em virt-install é perfeita.

Descrição de a página do manual :

Don't automatically try to connect to the guest console. The default behaviour is to launch a VNC client to display the graphical console, or to run the "virsh" "console" command to display the text console. Use of this parameter will disable this behaviour.

Agora, o comando virt-install que o programa executa executará e retornará quase imediatamente, pois não se conectará ao console e aguardará a conclusão da instalação. O convidado continuará a instalar em segundo plano usando o script kickstart mesmo que nada esteja conectado ao console. Contanto que não haja nada errado com o arquivo de kickstart, o convidado executará uma instalação completa e o desligamento (se o desligamento especificado no arquivo de kickstart) tiver sido concluído. Posso dizer quando um convidado terminou a instalação, pesquisando virsh list --all até que o convidado não seja mais mostrado como running .

O comando atualizado está abaixo:

virt-install --connect qemu:///system  \
--nographics \
--os-type linux \
--accelerate \
--hvm \
--network network=default,model=virtio \
--name testing124 \
--os-variant ubuntu16.04 \
--ram 1024 \
--vcpus 2 \
--location http://us.archive.ubuntu.com/ubuntu/dists/xenial/main/installer-amd64/ \
--disk /home/stuart/code-copy/vms/testing124/disk.raw,bus=virtio,format=raw,cache=writethrough \
--noautoconsole \
--extra-args "console=ttyS0 ks=http://pastebin.com/raw/6TznVUuN"
    
por 12.03.2017 / 16:01
1

O que eu normalmente uso em uma instalação automatizada é o --noreboot --noautoconsole , que praticamente cobre uma instalação completamente autônoma. Dito isso, geralmente é mais rápido e melhor usar virt-builder em vez de virt-install , pois o comando é mais estável e a manipulação de imagens é mais rápida e mais consistente do que uma instalação completa de um sistema operacional. Com uma imagem de VM de modelo predefinida, as coisas são ainda mais rápidas do que isso.

    
por 13.03.2017 / 00:40

Tags