virsh: falha ao conectar ao hipervisor como usuário

virsh: falha ao conectar ao hipervisor como usuário

Atualmente estou executando um sistema operacional RHEL 7.7.

Eu estava tentando configurar o ambiente minkube usando o driver kvm2, então o que acontece é que o minikube inicia bonito, mas com alguns erros durante a inicialização.

O erro é o seguinte:

'kvm2' driver reported an issue: /bin/virsh domcapabilities --virttype kvm failed:
error: failed to connect to the hypervisor
error: Cannot recv data: Connection reset by peer

Então comecei a investigar, e primeiro o que fiz foi tentar executar o comando virsh na linha de comando obtendo o mesmo erro idêntico, então a segunda coisa que tentei foi executar este comando com sudo, e neste caso funcionou.

Então acho que deve ser um problema de permissão, mas ainda não estou conseguindo resolver esse problema (gostaria de iniciar o minikube como usuário sem precisar usar o sudo).

O que eu tentei até agora:

  1. Adicione meu usuário no grupo libvirt - Ainda falhando
  2. Adicione meu usuário nos grupos: kvmuser qemu e kvm - Ainda falhando
  3. Atualizado o arquivo libvirtd.conf com a seguinte configuração:
unix_sock_group = "libvirt"
unix_sock_ro_perms = "0777"
unix_sock_rw_perms = "0770"
unix_sock_dir = "/var/run/libvirt"

  1. Verifiquei a regra do Policykit, que já estava presente com este conteúdo:
polkit.addRule(function(action, subject) {
    if (action.id == "org.libvirt.unix.manage"
            && subject.local
            && subject.active
            && subject.isInGroup("wheel")) {
        return polkit.Result.YES;
    }
});

Então tentei adicionar meu usuário no grupo wheel, ainda o mesmo problema

  1. Adicionei meu usuário também na rede systemd (aqui comecei apenas com coisas aleatórias lol: D) mesmo problema.
  2. Selinux desativado - mesmo problema.

Então procurei em todos os lugares e não consigo encontrar a solução para o meu problema, alguém que talvez tenha conseguido resolver?

Eu só quero executar o comando vish como um usuário normal.

Responder1

Então, depois de toda a luta (e provavelmente adicionar o usuário aos grupos certos fazia parte da configuração correta), ainda faltava uma coisa para fazê-lo funcionar como usuário.

Aparentemente, ele precisa da seguinte variável de ambiente para ser exportada:

export LIBVIRT_DEFAULT_URI=qemu:///system

Após essa exportação, se o usuário estiver em um grupo permitido para libvirt, todos os comandos começarão a funcionar.

Responder2

Eu não tenho um host compatível com rhel libvirt à mão, mas com um fedora 31 seguindo as instruções ema página de documentação do libvirt dbusPosso executar isso como um usuário membro do wheel:

$ cat /etc/dbus-1/system.d/org.libvirt.conf 
<?xml version="1.0"?>
<!DOCTYPE busconfig PUBLIC "-//freedesktop//DTD D-BUS Bus Configuration 1.0//EN"
 "http://www.freedesktop.org/standards/dbus/1.0/busconfig.dtd">

<busconfig>

  <policy group="wheel">
    <allow send_destination="org.libvirt"/>
  </policy>

</busconfig>

$ id
uid=1000(natxo) gid=1000(natxo) groups=1000(natxo),10(wheel) context=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023
$ virsh domcapabilities --virttype kvm
<domainCapabilities>
  <path>/usr/bin/qemu-system-x86_64</path>
  <domain>kvm</domain>
  <machine>pc-i440fx-4.1</machine>
  <arch>x86_64</arch>
  <vcpu max='255'/>
  <iothreads supported='yes'/>
  <os supported='yes'>
    <enum name='firmware'>
      <value>efi</value>
    </enum>
...

pode ser necessário reiniciar o libvirtd.

informação relacionada