Virt-Manager y virsh: Administración Remota vía SSH – Redes PYMES

Índice general de la serie: Redes de Computadoras para las PYMES: Introducción

¡Hola amigos!

Esperamos hayan seguido nuestros artículos publicados hasta ahora, los cuáles son:

Precisamente en el post Qemu-Kvm + Virt-Manager en Debian – Redes de Computadoras para las PYMES, especificamos que, teniendo una sola estación de trabajo con el Virt-Manager instalado, podemos administrar remotamente cuantos hipervisores sean necesarios. O sea, que en los servidores dedicados a la virtualización, no es obligatorio instalar un Desktop u otro ambiente gráfico.

Los servidores remotos debemos hacerlos según lo indicado en Instalación de estación de trabajo – Redes de Computadoras para las PYMES, o guiarse por los próximos artículos en que trataremos otros distribuciones como CentOS y puede que OpenSuSE, y posteriormente solo será necesario instalar el soporte para la virtualización en cada uno de ellos. Dicho de manera práctica, en esos servidores, después de una instalación limpia del Sistema Operativo Base y la actualización de los paquetes instalados acorde a los repositorios disponibles, solo será necesario instalar los paquetes qemu-kvm, libvirt-bin y bridge-utils, o algún otro paquete específico de cada distribución, lo que no quiere decir que si necesitamos otros programas, no lo instalemos.

Hypervisor remoto «jessie»

Las características de este servidor son las siguientes:

Nombre del Dominio      : desdelinux.fan
Nombre del Equipo       : jessie
FQDN                    : jessie.desdelinux.fan
Dirección IP            : 10.10.10.5
SubNet                  : 10.10.10.0/24
Memoria RAM     : 2G
Disco duro 1        : 20GB
Disco duro 2        : 80GB
Punto montaje disk 2    : /home/vms
Usuario normal          : buzz
Nombre completo usuario : Debian First OS Buzz

Preparamos el hypervisor «jessie»

Como aún no tenemos un DNS en la red, tendremos que seguir utilizando las IPs. Vía ssh o directamente en la consola del servidor, ejecutamos los siguientes comandos:

buzz@sysadmin:~$ ssh 10.10.10.5
buzz@10.10.10.5's password:

buzz@jessie:~$ sudo nano /etc/ssh/sshd_config
# Authentication:
LoginGraceTime 120
# PermitRootLogin without-password
PermitRootLogin yes             
StrictModes yes

buzz@jessie:~$ sudo service ssh restart
buzz@jessie:~$ sudo service ssh status
● ssh.service - OpenBSD Secure Shell server
   Loaded: loaded (/lib/systemd/system/ssh.service; enabled)
   Active: active (running) since dom 2016-12-11 12:15:24 EST; 3s ago
 Main PID: 14960 (sshd)

buzz@jessie:~$ sudo aptitude install qemu-kvm libvirt-bin
[sudo] password for buzz:

Después de finalizar las operaciones anteriores, abrimos el Virt-Manager en nuestra estación de trabajo de administración, y procedemos a gestionar el hipervisor remoto «jessie».

Con el objetivo de hacer más didáctico a este artículo, hemos empaquetado todas las imágenes para su descarga, y damos el enlace a continuación, para que mientras se lee la descripción del «Paso a Paso», puedan visualizar las imágenes localmente en su Visor de Imágenes preferido. Creemos que así es mucho más cómodo. Nosotros lo estamos haciendo mientras escribimos el artículo.

Descargar imágenes del «Paso a Paso» (961.1 kB).

Gestionamos a Jessie mediante el Virt-Manager y Virsh, vía SSH

Lo primero que debemos hacer en nuestra Workstation, es instalar un programa gráfico para gestionar las contraseñas de los usuarios que nos pide el libvirt remoto. Es imprescindible que, para conectarnos remotamente, el demonio libvirtd se esté ejecutando correctamente, y que el usuario escogido pertenezca al grupo libvirt del equipo remoto, o que sea el propio usuario root.

buzz@sysadmin:~$ sudo aptitude search askpass
p   ksshaskpass                - interactively prompt users for a passphrase for ssh-add             
p   razorqt-openssh-askpass    - OpenSSH helper component for Razor-qt desktop environment           
p   ssh-askpass                - under X, asks user for a passphrase for ssh-add                     
p   ssh-askpass-fullscreen     - Under Gnome2, asks user for a passphrase for ssh-add                
p   ssh-askpass-gnome          - interactive X program to prompt users for a passphrase for ssh-add

Nosotros escogimos el ssh-askpass-gnome, pues tenemos instalado el MATE-Desktop.

buzz@sysadmin:~$ sudo aptitude install ssh-askpass-gnome

Para evitar problemas, y siguiendo la recomendación del propio Virt-Manager que por defecto apunta al usuario root para conectarnos, es por lo que permitimos el acceso del root, vía ssh, cuando preparamos el hipervisor Jessie. Observen que no hicimos miembro del grupo libvirt al usuario normal buzz.

Básicamente, para administrar remotamente a un hipervisor y sus máquinas virtuales, procedemos de forma muy parecida a cuando gestionamos el hipervisor local.

Paso a Paso con imágenes descargadas

  • Imagen 01: Lo primero que hacemos es crear una Nueva Conexión en el Virt-Manager. Para ello navegamos por Menú –> + Añadir conexión… y después se abrirá una ventana de diálogo.
  • Imagen 02: Ventana de diálogo donde declaramos los valores principales de la nueva conexión que pretendemos establecer:
    • Hipervisor: QEMU/KVM
    • Conectar a equipo remoto por el Método: SSH
    • Nombre del usuario: root
    • Nombre del equipo: 10.10.10.5 (aun no tenemos DNS)
    • Autoconectar: implica que cuando iniciamos el Virt-Manager local, tratará de conectarse al hipervisor remoto automáticamente. Sugerimos no marcarlo
    • URI «Uniform Resource Identifier» generado: qemu+ssh://root@10.10.10.5/system

  • Imagen 03: Después de presionar el botón Conectar en el paso anterior, el programa ssh-askpass nos pregunta, si es que aun no habíamos realizado una conexión ssh remota previa, si deseamos continuar, a lo que respondemos que «Yes» tecleado en texto claro, aunque la ventana de diálogo no nos muestre lo que escribimos. Después de responder afirmativamente, hacemos Clic sobre el botón OK

  • Imagen 04: Ventana de diálogo donde debemos teclear la contraseña del usuario root del hipervisor remoto. Después de introducida, clic sobre OK.
  • Imagen 05: Ya el Virt-Manager local muestra las dos conexiones: la remota 10.10.10.5 (QEMU), y la local localhost (QEMU). Ahora, y manteniendo seleccionada a la conexión remota, navegamos por el Menú –> Editar –> Detalles de la conexión, y se mostrarán todos los detalles de la conexión seleccionada, tanto informativos como configurables.
  • Imagen 06: Pestaña «Repaso» con los detalles de la conexión. En ella leemos que la conexión es qemu+ssh://root@10.10.10.5/system. El nombre de equipo es jessie.desdelinux.fan. Y otros detalles referentes a la cantidad de memoria, arquitectura, uso de CPU y uso de memoria del hipervisor remoto.
  • Imagen 07: Pestaña «Redes Virtuales«. En ella vemos que la red «default» no debe Autoiniciar al arrancar el equipo, que la red es la 192.168.122.0/24, que está habilitado y con un rango definido el DHCP, y que el Reenvío es mediante NAT «Network Address Translation«.

Hagamos un paréntesis aquí y preguntémonos ¿cómo cambiamos la configuración de la red default a los parámetros necesarios para la LAN empresarial?.

Cambiamos la red «default» del hipervisor remoto mediante virsh

Iniciamos la consola virsh

buzz@sysadmin:~$ sudo virsh
[sudo] password for buzz: 
Welcome to virsh, the virtualization interactive terminal.

Type:  'help' for help with commands
       'quit' to quit

Nos conectamos con el equipo hipervisor remoto jessie

virsh # connect qemu+ssh://root@10.10.10.5/system
root@10.10.10.5's password:

Y ya entramos en el hipervisor remoto

virsh # net-list --all
 Name                 State      Autostart     Persistent
----------------------------------------------------------
 default              inactive   no            yes

virsh # net-info default
Name:           default
UUID:           18ce4bbb-fddb-4300-9f13-65b4d999690c
Active:         no
Persistent:     yes
Autostart:      no
Bridge:         virbr0

Nos encontramos con la siguiente configuración de la red default. Observemos que lo definido es la interfaz puente de la red, y no la red en si misma. Cualquier máquina que deseemos conectar a la interfaz virbr0, deberá compartir la misma red.

virsh # net-edit default
<network>
  <name>default</name>
  <uuid>18ce4bbb-fddb-4300-9f13-65b4d999690c</uuid>
  <forward mode='nat'/>
  <bridge name='virbr0' stp='on' delay='0'/>
  <ip address='192.168.122.1' netmask='255.255.255.0'>
    <dhcp>
      <range start='192.168.122.2' end='192.168.122.254'/>
    </dhcp>
  </ip>
</network>

Modificamos la configuración de la red default del hipervisor remoto acorde a la subnet de nuestra LAN empresarial, la cual es 192.168.10.0/24

virsh # net-edit default
<network>
  <name>default</name>
  <uuid>18ce4bbb-fddb-4300-9f13-65b4d999690c</uuid>
  <forward mode='nat'/>
  <bridge name='virbr0' stp='on' delay='0'/>
  <ip address='192.168.10.1' netmask='255.255.255.0'>
  </ip>
</network>

Marcamos la red default del hipervisor remoto para que Autonicie

virsh # net-autostart default
Network default marked as autostarted

virsh # net-info default
Name:           default
UUID:           18ce4bbb-fddb-4300-9f13-65b4d999690c
Active:         no
Persistent:     yes
Autostart:      yes
Bridge:         virbr0

Y por último iniciamos la red default del hipervisor remoto

virsh # net-start default
Network default started

virsh # net-list
 Name                 State      Autostart     Persistent
----------------------------------------------------------
 default              active     yes           yes

virsh # net-info default
Name:           default
UUID:           18ce4bbb-fddb-4300-9f13-65b4d999690c
Active:         yes
Persistent:     yes
Autostart:      yes
Bridge:         virbr0

Después de éstas modificaciones, debemos «Desconectar» y volver a «Conectar» la conexión con el equipo remoto en el Virt-Manager para visualizar los cambios.

Continuación Paso a Paso con imágenes descargadas

  • Imagen 07a: Pestaña «Redes Virtuales» con la red default ya modificada y en ejecución
  • Imagen 08: Pestaña «Almacenamiento» del hipervisor remoto. Inicialmente solo disponemos del Depósito de Almacenamiento default, y éste tiene marcado la opción de Autoiniciar. Si no vamos a almacenar imágenes de máquinas virtuales en el directorio /var/lib/libvirt/images por cualquier razón, lo recomendado es desmarcar la opción Autoiniciar. En esta ventana de diálogo, hacemos clic sobre el botón «+» para añadir un nuevo Depósito de Almacenamiento.
  • Imagen 09: Es la primera del asistente para añadir un nuevo depósito. El Nombre del nuevo depósito es jessie-vms-images y es un Directorio del Sistema de Archivos.
  • Imagen 10: Como tenemos un disco de 80GB montado en /home/vms para el almacenamiento de las imágenes, especificamos que la Ruta de destino será precisamente esa.
  • Imagen 11:  Una vez terminado el asistente, regresamos a «Almacenamiento» y encontramos que ya existe el nuevo depósito, que tiene copiado una imagen de CD para la creación de nuevas máquinas virtuales, que está Activo, y que tiene la opción Autoiniciar seleccionada. Creamos un nuevo volumen para un nueva máquina virtual, haciendo clic sobre el botón «Nuevo volumen«.
  • Imagen 12: El Nombre del nuevo volumen es samba-ad-dc, su formato qcow2 y su Máxima capacidad de crecimiento dinámico es de 15GB. De paso comprobamos que en el depósito «jessie-vms-images«, la capacidad disponible antes de crear el nuevo volumen, es de 77.95 GB. Para terminar con la creación del nuevo volumen, hacemos clic sobre el botón «Finalizar«
  • Imagen 13: De nuevo regresamos a «Almacenamiento» y comprobamos que la imagen fue creada correctamente. Sino vamos a modificar algo más en «Detalles de la conexión«, como es nuestro caso, cerramos la ventana haciendo clic en el botón «X» de su parte superior izquierda, y no mediante la opción del menú «Archivo», porque entonces se cerrará el Virt-Manager y tendremos que volver a abrirlo. 😉
  • Imagen 14: Comprobamos que en el Virt-Manager está seleccionada la conexión 10.10.10.5 (QEMU), porque es donde vamos a crea una nueva máquina virtual mediante su asistente. Hacemos clic en el botón «Crear una máquina virtual nueva«, o navegamos Menú –> Archivo –> Nueva máquina virtual. Se despliega el asistente y en la primera ventana de diálogo nos indica que la Conexión es 10.10.10.5 (QEMU/KVM), y seleccionamos que crearemos la máquina a partir de una imagen ISO ó CDROM.
  • Imagen 15: Especificamos el camino de la imagen ISO. Si hacemos clic sobre el botón Explorar… se abre la ventana Ubicar volumen de medio ISO, seleccionamos el depósito jessie-vms-images y en él, a la imagen debian-8.0.0-amd64-CD-1.iso. Después de seleccionada, se nos muestra el camino absoluto a la imagen /home/vms/debian-8.0.0-amd64-CD-1.iso. Posteriormente indicamos que Tipo de SO y su Versión. Por último hacemos clic en el botón Adelante.
  • Imagen 16: En éste cuadro de diálogo indicamos la cantidad de Memoria (RAM) y la cantidad de CPU que le daremos a la máquina virtual, cantidad que lógicamente no puede ser mayor que la del equipo Anfitrión o Hipervisor.
  • Imagen 17: Además de seleccionar Habilitar almacenamiento para esta máquina virtual, seleccionamos cuál será la imagen de disco que le asignaremos a la máquina, de igual forma que seleccionamos la imagen ISO. Al final elegimos el volumen /home/vms/samba-ad-dc.qcow2.
  • Imagen 18: Llegamos al final del asistente. Indicamos que el Nombre del Guest será samba-ad-dc; que deseamos Personalizar la configuración antes de instalar, que usaremos para conectarnos a la LAN empresarial la Red virtual ‘default’ : NAT, y Definir una dirección MAC estática para la interfaz de red, la cual se genera aleatoriamente. Hasta ahora no se ha creado la máquina. Cuando hagamos clic sobre el botón Finalizar, es cuando se creará.
  • Imagen 19: Ventana que se nos muestra porqué elegimos Personalizar antes de instalar. Por defecto, el Virt-Manager selecciona el Monitor Default SPICE. Si tenemos problemas de comunicación o visualización, podemos probar con el Servidor VNC para ese Monitor. Si cambiamos algún parámetro, debemos hacer clic en el botón Aplicar de cada recurso de hardware virtual. Sino, el Virt-Manager se queja. 😉
  • Imagen 20: De igual forma que en la elección anterior, ante problemas, probamos con el Video Default Modelo VMVGA. Para Iniciar la instalación del recién creado Guest remoto, hacemos clic en el botón «Iniciar instalación».
  • Imagen 21: Después de iniciada la instalación, y cada vez que deseemos conectarnos a una máquina virtual remota o Guest, el Virt-Manager nos pedirá nuevamente la autenticación del usuario que se conectó remotamente.
  • Imagen 22: Finalmente comenzamos con la instalación del Sistema Operativo elegido para el Guest remoto, tal y como lo hacemos para una máquina o servidor físico.
  • Imagen 23: El Virt-manager con sus Guests en ejecución, tanto locales como remotos.
  • Imagen 24: La máquina virtual samba-ad-dc en ejecución.

Hasta aquí, el Paso a Paso mediante imágenes comentadas, lo cual me sigue pareciendo el mejor método para éste tipo de artículos. Personalmente me es bastante molesto pasar imágenes y leer mensajes entre ellas. Claro que si está leyendo el post desde un smartphone, puede que prefiera el método antiguo. No se, es mejor escuchar sus opiniones sobre el formato que he seguido.

Muchos se preguntarán si es posible ejecutar todos los pasos anteriores mediante una consola normal, la consola del comando virsh, y el virt-viewer. La respuesta es afirmativa. Lo que sucede es que sería un post demasiado largo y muy técnico, y no queremos abrumar mas a los lectores con poca experiencia en el tema Virtualización.

Si algún lector está interesado en el cómo se hace con el virsh, por favor, contáctenos vía e-mail.

Próxima entrega

No estamos seguro de continuar con Estación de Trabajo con OpenSuSE o Estación de Trabajo con CentOS. ¿Cuál escogen Ustedes?

¡Hasta la próxima aventura, amigos!


7 comentarios, deja el tuyo

Deja tu comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

*

*

  1. Responsable de los datos: Miguel Ángel Gatón
  2. Finalidad de los datos: Controlar el SPAM, gestión de comentarios.
  3. Legitimación: Tu consentimiento
  4. Comunicación de los datos: No se comunicarán los datos a terceros salvo por obligación legal.
  5. Almacenamiento de los datos: Base de datos alojada en Occentus Networks (UE)
  6. Derechos: En cualquier momento puedes limitar, recuperar y borrar tu información.

  1.   dhunter dijo

    Una buena utilidad que descubrí para hacer backups de los virtuales en libvirt, esto completa bastante el ecosistema.

    https://github.com/dguerri/LibVirtKvm-scripts

  2.   fico dijo

    ¡Saludos amigo Dhunter!. Ya visité la página, y el script está muy organizado y completo. Solo queda adaptar el script a nuestras necesidades, declarando en el bloque «Defaults and constants», los valores aplicables a cada caso. Lo probaré cuando tenga un tiempo para dedicarle. Además, el script fi-backup.sh ya va por su versión 2.1.0. Sería positivo que, si lo pruebas, me comentes.

  3.   Zodiac Carburus dijo

    Lástima que en artículo de tan buena calidad comenten pocos. Esperamos tus próximas entregas, fico.

  4.   Cristian dijo

    Muy buenos articulos estos, me gustaria que lo hicieras ahora con CentOS. Esa es mi distro favorita para servidores y que utilizamos en la Universidad. Saludos desde Guatemala y en espera del siguiente articulo.

  5.   fico dijo

    Cristian, tu pedido será cumplido prontamente. Ya dijimos que íbamos a escribir sobre las distros fuertemente orientadas al entorno empresarial, CentOS y OpenSuSE. Hasta ahora pienso hacer un escritorio sobre CentOS y en otro artículo, continuar con la instalación de Qemu + KVM y demás.

  6.   Ismael Alvarez Wong dijo

    hola fico: nuevamente otro gran post sobre virt kemu-kvm, pero ahora desde otro punto de vista, administrar un hipervisor remoto de tipo kvm desde una WK en donde tenemos la herramienta grafica de administracion de hipervisores «Virt-Manager» utilizando el metodo SSH y empleando ademas el virsh; muy interesante el protocolo de conexión «qemu+ssh://user@IP/system».
    . genial lo de cambiar la configuración de la red default a los parámetros necesarios para la LAN empresarial mediante el comando virsh (este ejemplo deasarrollado me gusto mucho)
    . asi como lo del almacenamiento desde el Virt-Manager (la creacion primeramente de la imagen en disco que ocupara un futuro dominio que aun no se ha creado en el hipervisor remoto; para finalmente desde el mismo Virt-Manager y conectados el hipervisor remoto crear el nuevo dominio.
    De espanto el ultimo parrafo «Muchos se preguntarán si es posible ejecutar todos los pasos anteriores mediante una consola normal, la consola del comando virsh, y el virt-viewer. La respuesta es afirmativa. …»
    !Amigo, con cada nuevo post subes la parada!
    Que otros hipervisores «entiende» el Virt-Manager (es decir el KVM)?

    1.    federico dijo

      Gracias nuevamente, amigo Wong, por todos tus muy buenos comentarios sobre el tema Virtualización.
      Documentación sobre Libvirt y Virsh con otros hipervisores:
      «Libvirt 0-8-6 and Vmware Esx »
      http://www.jedi.be/blog/2010/12/08/libvirt-0-8-6-and-vmware-esx/

      «VMware ESX hypervisor driver»
      https://libvirt.org/drvesx.html

      «How to run Qemu & KVM on ESXi?»
      http://www.virtuallyghetto.com/2014/09/how-to-run-qemu-kvm-on-esxi.html

      O sea, te darás cuenta de que libvirt y la interfaz principal Virsh para manejar hipervisores, son sencillamente GENIALES. 😉