virsh: no se pudo conectar al hipervisor como usuario

virsh: no se pudo conectar al hipervisor como usuario

Actualmente estoy ejecutando un sistema operativo RHEL 7.7.

Estaba intentando configurar el entorno minkube usando el controlador kvm2, entonces lo que sucede es que minikube comienza bastante, pero con algunos errores durante el inicio.

El error es el siguiente:

'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

Entonces comencé a investigar, y lo primero que hice fue intentar ejecutar el comando virsh en la línea de comando obteniendo el mismo error idéntico, así que lo segundo que intenté fue ejecutar este comando con sudo, y en este caso funcionó.

Entonces creo que tiene que ser un problema de permisos, pero aún así no logro resolver este problema (me gustaría iniciar minikube como usuario sin tener que usar sudo).

Lo que probé hasta ahora:

  1. Agregar mi usuario al grupo libvirt - Sigue fallando
  2. Agregar mi usuario en los grupos: kvmuser qemu y kvm - Sigue fallando
  3. Se actualizó el archivo libvirtd.conf con la siguiente configuración:
unix_sock_group = "libvirt"
unix_sock_ro_perms = "0777"
unix_sock_rw_perms = "0770"
unix_sock_dir = "/var/run/libvirt"

  1. Verificó la regla del kit de políticas, que ya estaba presente con este contenido:
polkit.addRule(function(action, subject) {
    if (action.id == "org.libvirt.unix.manage"
            && subject.local
            && subject.active
            && subject.isInGroup("wheel")) {
        return polkit.Result.YES;
    }
});

Entonces intenté agregar mi usuario al grupo de ruedas, pero sigue siendo el mismo problema.

  1. Agregué mi usuario también en la red systemd (aquí comencé solo con cosas aleatorias jajaja: D) el mismo problema.
  2. Selinux deshabilitado: el mismo problema.

Entonces busqué por todas partes y no puedo encontrar la solución a mi problema, ¿alguien que tal vez haya logrado resolverlo?

Sólo quiero ejecutar el comando vish como un usuario normal.

Respuesta1

Entonces, después de toda la lucha (y por cierto, probablemente agregar el usuario a los grupos correctos era parte de la configuración correcta), todavía me faltaba una cosa para que funcionara como usuario.

Aparentemente necesita exportar la siguiente variable de entorno:

export LIBVIRT_DEFAULT_URI=qemu:///system

Después de esa exportación, si el usuario está en un grupo permitido para libvirt, todos los comandos comienzan a funcionar.

Respuesta2

No tengo a mano un host compatible con rhel libvirt, pero con un fedora 31 siguiendo las instrucciones enla página de documentación de libvirt dbusPuedo ejecutar eso como usuario miembro de la rueda:

$ 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>
...

es posible que deba reiniciar libvirtd.

información relacionada