Introducción
Libvirt es un API de código abierto y una herramienta de administración para diferentes sistemas de virtualización entre los que se encuentran Xen, OpenVZ, Virtualbox, VMWare, Microsoft Hyper-V y por supuesto KVM/Qemu instalado en el servidor de desarrollo previamente.
Este software es ideal para la gestión de las máquinas virtuales y su administración remota a través de conexiones seguras con SSH. Además incluye una librería en C para el desarrollo de aplicaciones e incluye además interfaces para diversos lenguajes como Python, Perl, Ruby, Java y PHP.
Instalación del software
Instalar los paquetes del repositorio oficial.
# pacman -S libvirt urlgrabber dnsmasq bridge-utils
Inicio automático del demonio
Configurar el demonio de libvirtd para que se inicie automáticamente junto con el sistema operativo.
# vi /etc/rc.conf
DAEMONS = (… libvirtd …)
Debe tenerse en cuenta que el demonio libvirtd requiere ser invocado después de dbus y avahi-daemon.
Autorizar la administración a usuarios sin privilegios
Si se desea que usuarios sin privilegios (diferentes de root) administren las máquinas virtuales, estos deberán ser explícitamente autorizados de la siguiente manera.
# vi /etc/polkit-1/localauthority/50-local.d/org.libvirt.unix.manage.pkla
[Allow a user to manage virtual machines]
Identity=unix-user:jimezam
Action=org.libvirt.unix.manage
ResultAny=yes
ResultInactive=yes
ResultActive=yes
Si en lugar de administración se desea conceder la autorización para monitorear las máquinas se deberá especificar la siguiente acción.
org.libvirt.unix.monitor
Permitir el acceso a través de SSH
Para permitir el acceso a las máquinas virtuales a través de herramientas como virsh o virt-viewer a través del protocolo SSH (qemu+ssh) es necesario contar con paquete netcat de OpenBSD instalado de la siguiente manera.
$ sudo pacman -S openbsd-netcat
Si se cuenta adicionalmente con el paquete netcat convencional instalado es posible que este se haya apoderado del enlace /usr/bin/nc y libvirt intente utilizarlo erróneamente generando el siguiente mensaje de error.
error: server closed connection: nc: invalid option — ‘U’
Try `nc –help’ for more information.
error: failed to connect to the hypervisor
En ese caso es necesario indicarle a libvirt cual es la versión de netcat que debe utilizar. Esto se puede realizar desde los parámetros extra del URI en cada invocación de acceso de la siguiente manera.
$ virsh -d 0 –connect qemu+ssh://usuario@servidor/system?netcat=/usr/bin/nc.openbsd
O de manera permanente modificando en el servidor el enlace /usr/bin/nc de la siguiente manera.
$ sudo mv /usr/bin/nc /usr/bin/nc.orig
$ sudo ln -s /usr/bin/nc.openbsd /usr/bin/nc
Enlaces
- LibVirt en ArchLinux
https://wiki.archlinux.org/index.php/Libvirt - Remove Support on Libvirt
http://libvirt.org/remote.html