Cómo instalar WebVirtCloud KVM Management en Ubuntu 20.04

WebVirtCloud es una herramienta de gestión basada en la web para la virtualización KVM. Permite a los administradores y usuarios crear, gestionar y eliminar máquinas virtuales que se ejecutan en el hipervisor KVM desde una interfaz web. Está basada en Django y admite la autorización y autenticación basadas en el usuario. Con WebVirtCloud, puedes gestionar múltiples hipervisores QEMU/KVM, gestionar redes de hipervisores y gestionar pools de almacenes de datos desde una única instalación.

En este tutorial, te mostraré cómo instalar la herramienta de gestión de KVM de WebVirtCloud en Ubuntu 20.04.

Requisitos previos

  • Un servidor con Ubuntu 20.04.
  • Una contraseña de root configurada en el servidor.

Cómo empezar

En primer lugar, actualiza los paquetes del sistema a la versión actualizada ejecutando el siguiente comando:

apt-get update -y

Una vez actualizados todos los paquetes, puedes pasar al siguiente paso.

Verificar la compatibilidad con la virtualización

Antes de empezar, deberás verificar si tu sistema operativo admite la virtualización por hardware o no.

Ejecuta el siguiente comando para verificarlo.

grep -E -c "vmx|svm" /proc/cpuinfo

Si el resultado es superior a 0, entonces tu sistema operativo soporta la virtualización por hardware.

2

A continuación, también tendrás que comprobar si tu sistema es capaz de ejecutar máquinas virtuales KVM.

Para ello, instala el cpu-checker con el siguiente comando:

apt-get install cpu-checker -y

Una vez instalado, ejecuta el siguiente comando para verificarlo:

kvm-ok

Deberías ver la siguiente salida:

INFO: /dev/kvm exists
KVM acceleration can be used

Una vez que hayas terminado, puedes pasar al siguiente paso.

Instalar el hipervisor KVM

A continuación, tendrás que instalar KVM en tu servidor. Puedes instalar KVM con todas las herramientas necesarias utilizando el siguiente comando:

apt-get install qemu qemu-kvm libvirt-daemon bridge-utils virt-manager virtinst -y

Después de la instalación, tendrás que verificar si el módulo KVM se ha cargado o no. Puedes verificarlo con el siguiente comando:

lsmod | grep -i kvm

Deberías ver la siguiente salida:

kvm_intel             286720  0
kvm                   663552  1 kvm_intel

A continuación, comprueba el estado del servicio libvirtd con el siguiente comando:

systemctl status libvirtd

Deberías ver la siguiente salida:

? libvirtd.service - Virtualization daemon
     Loaded: loaded (/lib/systemd/system/libvirtd.service; enabled; vendor preset: enabled)
     Active: active (running) since Sun 2021-08-01 04:57:14 UTC; 1min 3s ago
TriggeredBy: ? libvirtd-admin.socket
             ? libvirtd-ro.socket
             ? libvirtd.socket
       Docs: man:libvirtd(8)
             https://libvirt.org
   Main PID: 5236 (libvirtd)
      Tasks: 19 (limit: 32768)
     Memory: 16.2M
     CGroup: /system.slice/libvirtd.service
             ??5236 /usr/sbin/libvirtd
             ??5385 /usr/sbin/dnsmasq --conf-file=/var/lib/libvirt/dnsmasq/default.conf --leasefile-ro --dhcp-script=/usr/lib/libvirt/libvirt_>
             ??5386 /usr/sbin/dnsmasq --conf-file=/var/lib/libvirt/dnsmasq/default.conf --leasefile-ro --dhcp-script=/usr/lib/libvirt/libvirt_>

Aug 01 04:57:14 ubuntu2004 systemd[1]: Started Virtualization daemon.
Aug 01 04:57:15 ubuntu2004 dnsmasq[5385]: started, version 2.80 cachesize 150
Aug 01 04:57:15 ubuntu2004 dnsmasq[5385]: compile time options: IPv6 GNU-getopt DBus i18n IDN DHCP DHCPv6 no-Lua TFTP conntrack ipset auth net>
Aug 01 04:57:15 ubuntu2004 dnsmasq-dhcp[5385]: DHCP, IP range 192.168.122.2 -- 192.168.122.254, lease time 1h
Aug 01 04:57:15 ubuntu2004 dnsmasq-dhcp[5385]: DHCP, sockets bound exclusively to interface virbr0
Aug 01 04:57:15 ubuntu2004 dnsmasq[5385]: reading /etc/resolv.conf
Aug 01 04:57:15 ubuntu2004 dnsmasq[5385]: using nameserver 127.0.0.53#53
Aug 01 04:57:15 ubuntu2004 dnsmasq[5385]: read /etc/hosts - 5 addresses
Aug 01 04:57:15 ubuntu2004 dnsmasq[5385]: read /var/lib/libvirt/dnsmasq/default.addnhosts - 0 addresses
Aug 01 04:57:15 ubuntu2004 dnsmasq-dhcp[5385]: read /var/lib/libvirt/dnsmasq/default.hostsfile

Una vez que hayas terminado, puedes pasar al siguiente paso.

Instalar Nginx y otros paquetes

A continuación, tendrás que instalar los paquetes Nginx, Python y otros paquetes necesarios en tu servidor. Puedes instalarlos todos con el siguiente comando:

apt-get install git virtualenv python3-virtualenv python3-dev python3-lxml libvirt-dev zlib1g-dev libxslt1-dev nginx supervisor libsasl2-modules gcc pkg-config python3-guestfs libsasl2-dev libldap2-dev libssl-dev -y

Una vez instalados todos los paquetes, puedes pasar al siguiente paso.

Instalar y configurar WebVirtCloud

En primer lugar, descarga la última versión de WebVirtCloud desde el repositorio Git con el siguiente comando:

git clone https://github.com/retspen/webvirtcloud

Una vez completada la descarga, cambia el directorio a webvirtcloud y copia el archivo de ejemplo setting.py:

cd webvirtcloud
cp webvirtcloud/settings.py.template webvirtcloud/settings.py

A continuación, genera una clave secreta con el siguiente comando:

openssl rand -base64 32

Deberías obtener la siguiente salida:

mTHhsUm5adG8DABJaIvmRLpQjNbL1vdeIpBDi/jQCV0=

A continuación, edita el archivo settings.py y define tu clave secreta:

nano webvirtcloud/settings.py

Cambia la siguiente línea:

SECRET_KEY = "mTHhsUm5adG8DABJaIvmRLpQjNbL1vdeIpBDi/jQCV0="

Guarda y cierra el archivo y luego copia el archivo de configuración de WebVirtCloud en el directorio de Nginx y Supervisor:

cp conf/supervisor/webvirtcloud.conf /etc/supervisor/conf.d
cp conf/nginx/webvirtcloud.conf /etc/nginx/conf.d

A continuación, vuelve a tu directorio principal y mueve el directorio webvirtcloud al directorio /srv:

cd ..
mv webvirtcloud /srv/

A continuación, establece la propiedad adecuada del directorio webvirtcloud:

chown -R www-data:www-data /srv/webvirtcloud/

A continuación, cambia el directorio a webvirtcloud y crea un entorno virtual:

cd /srv/webvirtcloud/
virtualenv -p python3 venv

A continuación, activa el entorno virtual con el siguiente comando:

source venv/bin/activate

A continuación, instala las dependencias de Python necesarias con el siguiente comando:

pip install -r conf/requirements.txt

Deberías ver la siguiente salida:

Successfully built libvirt-python qrcode rwlock websockify
Installing collected packages: sqlparse, pytz, asgiref, Django, soupsieve, beautifulsoup4, django-bootstrap5, django-icons, django-login-required-middleware, django-otp, segno, django-qr-code, gunicorn, six, libsass, libvirt-python, lxml, qrcode, rwlock, numpy, websockify, zipp, pyasn1, ldap3
Successfully installed Django-3.2.5 asgiref-3.4.1 beautifulsoup4-4.9.3 django-bootstrap5-2.0.1 django-icons-4.0.0 django-login-required-middleware-0.6.1 django-otp-1.0.6 django-qr-code-2.2.0 gunicorn-20.1.0 ldap3-2.9 libsass-0.21.0 libvirt-python-7.4.0 lxml-4.6.3 numpy-1.21.1 pyasn1-0.4.8 pytz-2021.1 qrcode-7.0 rwlock-0.0.7 segno-1.3.3 six-1.16.0 soupsieve-2.2.1 sqlparse-0.4.1 websockify-0.9.0 zipp-3.4.1

A continuación, ejecuta el comando migrate para generar todas las tablas:

python3 manage.py migrate

Deberías ver la siguiente salida:

  Applying otp_totp.0001_initial... OK
  Applying otp_totp.0002_auto_20190420_0723... OK
  Applying sessions.0001_initial... OK
* Creating default admin user
! SHOW_PROFILE_EDIT_PASSWORD is found inside settings.py
* Applying permission can_change_password for all users
! Warning!!! Setting to True for all users
! Don`t forget to remove the option from settings.py
* Migrating can_clone_instaces user attribute to permission
* Applying permission passwordless_console for all users

A continuación, desactiva el entorno virtual de Python con el siguiente comando:

deactivate

A continuación, establece la propiedad adecuada al directorio webvirtcloud con el siguiente comando:

chown -R www-data:www-data /srv/webvirtcloud/

A continuación, elimina el archivo de configuración del host virtual por defecto de Nginx:

rm /etc/nginx/sites-enabled/default

A continuación, reinicia el servicio Nginx y Supervisor para aplicar los cambios:

systemctl restart nginx
systemctl restart supervisor

Ahora puedes verificar el estado de Nginx con el siguiente comando:

systemctl status nginx

Deberías ver la siguiente salida:

? nginx.service - A high performance web server and a reverse proxy server
     Loaded: loaded (/lib/systemd/system/nginx.service; enabled; vendor preset: enabled)
     Active: active (running) since Sun 2021-08-01 10:35:57 UTC; 12s ago
       Docs: man:nginx(8)
    Process: 29055 ExecStartPre=/usr/sbin/nginx -t -q -g daemon on; master_process on; (code=exited, status=0/SUCCESS)
    Process: 29068 ExecStart=/usr/sbin/nginx -g daemon on; master_process on; (code=exited, status=0/SUCCESS)
   Main PID: 29076 (nginx)
      Tasks: 3 (limit: 4691)
     Memory: 3.4M
     CGroup: /system.slice/nginx.service
             ??29076 nginx: master process /usr/sbin/nginx -g daemon on; master_process on;
             ??29077 nginx: worker process
             ??29078 nginx: worker process

Aug 01 10:35:57 ubuntu2004 systemd[1]: Starting A high performance web server and a reverse proxy server...
Aug 01 10:35:57 ubuntu2004 systemd[1]: Started A high performance web server and a reverse proxy server.

Configurar KVM y Libvirt

A continuación, ejecuta el siguiente script para configurar KVM y Libvirt:

wget -O - https://bit.ly/36baWUu | sh

Deberías ver la siguiente salida:

Length: 151 [text/plain]
Saving to: ‘/etc/supervisor/conf.d/gstfsd.conf’

/etc/supervisor/conf.d/gstfsd.conf  100%[==================================================================>]     151  --.-KB/s    in 0s      

2021-08-01 10:36:51 (5.50 MB/s) - ‘/etc/supervisor/conf.d/gstfsd.conf’ saved [151/151]

 *  INFO: Found function daemons_running_ubuntu
 * DEBUG: DAEMONS_RUNNING_FUNC=daemons_running_ubuntu
 *  INFO: Running daemons_running_ubuntu()

Por último, añade un usuario KVM al grupo www-data con el siguiente comando:

adduser www-data kvm

Accede a WebVirtCloud

En este punto, WebVirtCloud está instalado y configurado. Es hora de acceder a la interfaz web de WebVirtCloud.

Abre tu navegador web y escribe la URL http://your-server-ip. Serás redirigido a la página de inicio de sesión de WebVirtCloud:

Inicio de sesión de WebVirtCloud

Proporciona el nombre de usuario y la contraseña por defecto como admin/admin y haz clic en el botón Iniciar sesión. Deberías ver el panel de control de WebVirtCloud en la siguiente página:

Panel de control de webVirtCloud

Conclusión

Enhorabuena! has instalado con éxito WebVirtCloud en el servidor Ubuntu 20.04. Ahora puedes crear y gestionar tus máquinas virtuales desde la interfaz basada en la web. No dudes en preguntarme si tienes alguna duda.

También te podría gustar...