Virt-Manager remoto
El objetivo es poder ejecutar virt-manager desde mi Mac para administrar las VM’s de un par de servidores anfitriones KVM/QEMU remotos sin necesidad de instalarles un entorno X11. He documentado dos opciones, la primera es mediante máquina virtual local (Virtualbox/Parallels/…) con un ubuntu y entorno mínimo GUI (solo Xorg/X11
y virt-manager
), la segunda es mediante HomeBrew.
Opción Máquina Virtual
Tengo Parallels como software de Virtualización pero debe funcionar exactamente igual con VirtualBox o cualquier otro virtualizador en tu Mac.
- Creo una VM con Ubuntu Server 20.04 LTS: ubuntu-20.04.3-live-server-amd64.iso
- Instalo las Parallel Tools (opciónal)
- Red compartida, me asignará una IP automáticamente del rango privado.
- Parallels crea una entrada en el
/etc/hosts
con el nombre de la máquina virtual y su IP. Compruebo que funciona y de paso quito el motd (Mensaje del Día) del ubuntu
luis@macos:~$ ssh -p 22 ubuntu-linux
:
luis@ubuntu:~$ touch $HOME/.hushlogin
- Preparo el entorno mínimo Xorg/X11 (más info):
luis@ubuntu:~$ sudo apt install xauth
:
luis@ubuntu:~$ sudo apt install virt-manager ssh-askpass-gnome --no-install-recommends
luis@ubuntu:~$ sudo apt install -y spice-client-gtk
- Prepararo SSH, para conectar desde mi VM
ubuntu
a un servidor llamadotierra
con KVM/QEMU. Aquí tienes una guía sobre SSH en Linux y otra sobre SSH y X11 como root.
virt-manager libvirtd
host:ubuntu host:tierra
+-------------+ +--------------+
| luis@ubuntu | ---- ssh ---> | luis@tierra |
+-------------+ +--------------+
- Configuro el cliente SSH en
ubuntu
. En mi caso el servidortierra
exige autenticar vía clave pública.
luis@ubuntu $ ssh-keygen -t rsa -b 2048
- En el servidor
@tierra
añado el usuario al grupolibvirt
root@tierra # cat /etc/group
:
libvirt:x:116:luis
- Compruebo…
luis@macos:$ ssh -Y -a luis@ubuntu-linux
:
luis@ubuntu:~$ ssh tierra
Enter passphrase for key '/home/luis/.ssh/id_rsa':
luis@tierra:~$
luis@tierra:~$ id
uid=1000(luis) gid=1000(luis) grupos=1000(luis),4(adm),24(cdrom),27(sudo),116(libvirtd)
Conexión desde virt-manager en máquina virtual
luis@macos:$ ssh -Y -a -p 22 luis@ubuntu-linux
:
luis@ubuntu:~$ virt-manager
- Archivo > Añadir conexión
- Hypervisor: QEMU/KVM
- (x) Xonectar a anfitrión remoto mediante SSH
- Nombre de usuario: luis
- Nombre de equipo: tierra.tudominio.com
- Autoconectar: (X)
- URI generado: qemu+ssh://luis@tierra…
- Conexión desde línea de comandos
También tienes la opción de conectar directamente desde la línea de comandos o si tienes tu servidor remoto escuchando por otro puerto para SSH, cambia XXXXX por el puerto.
luis@ubuntu$ virt-manager -c 'qemu+ssh://luis@tierra.tudominio.com/system?keyfile=id_rsa'
luis@ubuntu$ virt-manager -c 'qemu+ssh://luis@tierra.tudominio.com:XXXXX/system?keyfile=id_rsa'
Opción HomeBrew
- Virt-manager no está disponible en HomeBrew, existe una fórmula personalizada que permite instalarlo pero está obsoleta y falla. Gracias a este Issues/184 y múltiples forks he encontrado el de Damenly, que tiene buena pinta. Ojo, es super simple, solo instala virt-manager, no instala libvirt ni soporta ciertas dependencias (como por ejemplo la contraeña de ssh, leer el README).
- He tenido algún que otro problema al instalarlo y lo desinstalé, lo dejo aquí para hacer seguimiento a este proyecto.
brew tap Damenly/homebrew-virt-manager brew install virt-manager --HEAD brew install virt-viewer
- Una vez instalado ejecutamos:
export XDG_DATA_DIRS="/opt/homebrew/share/". virt-manager -c test:///default