Erro de instalação do Virt: não é possível carregar o arquivo de ignição

Erro de instalação do Virt: não é possível carregar o arquivo de ignição

Estou tentando instalar o Fedora CoreOS usando virt-install, conforme descrito aqui: https://docs.fedoraproject.org/en-US/fedora-coreos/getting-started/

O comando exato que estou executando:virt-install --connect qemu:///system -n fcos -r 2048 --os-variant=fedora31 --import --graphics=none --disk size=10,backing_store=fedora-coreos-31.20200310.3.0-qemu.x86_64.qcow2 --qemu-commandline="-fw_cfg name=opt/com.coreos/config,file=/home/test/Downloads/example.ign"

está retornando este erro:

Allocating 'fcos.qcow2'                                                                                              |  10 GB  00:00:00     
ERROR    internal error: qemu unexpectedly closed the monitor: 2020-04-05T14:52:47.919380Z qemu-system-x86_64: -fw_cfg name=opt/com.coreos/config,file=/home/test/Downloads/example.ign: can't load /home/test/Downloads/example.ign
Removing disk 'fcos.qcow2'                                                                                           |    0 B  00:00:00     
Domain installation does not appear to have been successful.

Estou executando este comando como root. O arquivo de ignição está funcionando porque o usei com sucesso para implantar esta VM a partir de um arquivo iso.

Responder1

Eu tive o mesmo problema, com base na dica de primeiros passos, pode ser necessário executar o comando chcon.

Se estiver executando com o SELinux habilitado, pode ser necessário alterar o rótulo do arquivo Ignition para permitir o acesso: chcon -t svirt_home_t path/to/example.ign

Responder2

Muito provavelmente é um problema do AppArmor. Encontrei o mesmo problema, tentei todas as soluções alternativas possíveis para permissão de arquivo, como setfacl -m u:libvirt-qemu:rxe chcon -t, mas acabou sendo uma limitação do perfil do AppArmor:

Para resolver o problema, altere /etc/apparmor.d/libvirt/TEMPLATE.qemupara incluir o caminho para as configurações de ignição:

#
# This profile is for the domain whose UUID matches this file.
#

#include <tunables/global>

profile LIBVIRT_TEMPLATE flags=(attach_disconnected) {
  #include <abstractions/libvirt-qemu>
  /home/test/Downloads/example.ign rk,
  /etc/ignition/**.ign rk,
}

Observe que adicionei /etc/ignition/**.ignglob como exemplo se você decidir organizar todas as configurações do Ignition para suas VMs no futuro.

Dessa forma, você poderá criar uma VM CoreOS usando virt-install.

Como opção, você pode desativar o AppArmor para Qemu configurando security_driver = "none"-o, /etc/libvirt/qemu.confmas isso é fortemente desencorajado, eu diria.

Responder3

Independentemente de você executar virt-installcomo root, a VM lançada pela libvirt qemu:///systemprovavelmente está usando o qemuusuário. Esse qemuusuário provavelmente não tem acesso de pesquisa + leitura a /home/test, por exemplo. Mover o arquivo para /tmpresolveria o problema ou abriria as permissões em todo o /home/testcaminho do arquivo

Responder4

Usando versões mais recentes dogerenciador de virt(6.5) elibvirt(3.0), agora você pode usar

virt-install \
    --sysinfo type=fwcfg,entry0.name=opt/com.coreos/config,entry0.file=${IGNITION_CONFIG} \
    ...

que cuidará de definir corretamente as etiquetas no arquivo de ignição.

informação relacionada