Director de sesión en el aula - GNU/Linux & UNIX

Profesor Alejandro de la Torre

  Iaas con VirtualBox

Documentos e información


IaaS. ¿Qué es?

Algunos proveedores
OVH
AWS
Azure

Algunos productos para crear infraestructura
VirtualBox
Proxmox
CitrixHypervisor (XenServer)
VMware vSphere



Algunos productos para gestionar infraestructura
OpenStack
OpenNebula
CloudStack
Eucalyptus

Puntos de desarrollo

    IaaS (por su acrónimo en inglés -Infrastructure as a Service-) es una  forma de disponer de recursos de computación en régimen de "pago por lo que uso". Es una práctica creciente por parte de organizaciones privadas y públicas que han dejado de comprar hierro para pasarse a la computación en la nube (cloud computing). Son muchos los servicios que brinda el cloud, no hay más que ver el catálogo de productos de cualquier proveedor, por ejemplo, AWS... interminable (recomiendo al alumno que le eche un vistazo) pero, aún así, entre los items de esos extensos catálogos nunca falta la oferta del más elemental de los componentes de IaaS...El servidor privado virtual (VPS).
    
    Un VPS debe ser contemplando como un objeto que, al igual que un archivo en un sistema de ficheros, puede ser creado, movido, copiado, salvaguardado, modificado o eliminado, y todo ello, con líneas de ordenes invocadas desde una shell, lo cual, permite facilitar y automatizar las tareas con estos objetos.
Imaginemos, por ejemplo, cómo resuelve un proveedor de cloud-computing como OVH los miles de peticiones diarias para crear, ampliar, monitorizar o cancelar VPS,s... Que nadie piense que hay un ejército de técnicos recibiendo peticiones y actuando en consecuencia con herramientas como el panel gráfico de VirtualBox. Todo está automatizado y es gracias a las funcionalidades de los productos mencionados en el apartado documentos e información que, entre otras cosas, proporcionan una extensa batería de comandos para llevar a cabo dicha automatización.

    El alumno debe comprender que un sysadmin debe adquirir competencias básicas sobre la creación, uso, gestión y monitorización de los VPS de manera automatizada.

    VirtualBox es un producto de primera línea. Ha evolucionado vigorosamente a lo largo del tiempo, desde que nació de la mano de Innotek, empresa que fue adquirida por Sun Microsystems y a su vez esta adquirida por Oracle Corporation. En estos tres escenarios ha crecido hasta convertirse en una seria alternativa como herramienta de provisión de infraestructura virtual en plataformas x86. Al ser opensource y estar disponible bajo licencia GPL se convierte en un gran aliado tanto para proyectos profesionales de propósito general como para adquirir competencias verdaderamente útiles en entornos académicos.

Suite de comandos

    En sistemas operativos GNU/Linux-Unix la instalación de VirtualBox deposita en el sistema de ficheros un conjunto de comandos con los cuales se pueden conjugar líneas de órdenes de shell que dan acceso a todo lo que VirtualBox puede hacer.  Podemos dividir estos comandos en dos grupos: Grupo A) Herramientas de gestión, administración y mantenimiento de VM,s, medios virtuales y redes virtuales; Grupo B) Piezas propias de la arquitectura de VirtualBox que funcionan como backend del primer grupo o del propio sistema operativo. Veamos una descripción corta de ambos grupos; están contextualizadas en la versión 6.0 de VirtualBox:

Grupo A)


VirtualBox: Lanza el panel gráfico desde donde trabajar con VirtualBox de forma fácil y amigable.

VBoxManage: Piedra angular de VirtualBox. Es la interface con la línea de ordenes de la shell. Con VBoxManage se controla completamente el producto y los objetos que genera.

VBoxHeadless: Arranca una máquina virtual de forma ciega, es el mismo efecto que se consigue quitando el monitor a una máquina física, altamente recomendable para granjas de VM,s residentes en un mismo anfitrión.

VBoxVRDP: Es un ejecutable presente en la versión 6 para asegurar la compatibilidad hacia atrás. Su función la asume VBoxHeadless en las versiones modernas.

VBoxSDL: Inicia una VM,s de forma directa con ventaneo simplificado de cara al usuario que lo invoca. La ventana no incluye ningún tipo de menu superior o inferior, sólo el marco. Ideal para comunicación visual con la consola aplicando un bajo consumo del ancho de banda de la red en caso de enlaces remotos.

VirtualBoxVM: Inicia una VM,s de forma directa con ventaneo de cara al usuario que lo invoca. La ventana incluye la barra de menu superior y los enlaces directos a la configuración en la barra del pie de la ventana. Supone más carga sobre el ancho de banda de la red en caso de comunicación remota. 

Grupo B)

VBoxBugReport: Recolecta información de la instalación de VirtualBox, sus componentes y las VM,s existentes para remitirla al soporte del  fabricante (Oracle Corp). en caso de ser necesario.

VBoxAutostart: Permite iniciar VM,s al iniciar el sistema como si de un servicio se tratara.

VBoxDTrace: Backend que trabaja de la mano de VBoxBugReport.

VBoxBalloonCtrl: Renombrado en versiones actuales de VirtualBox como VBoxWatchdog es una funcionalidad de tipo backend que proporciona a la parte de VirtualBox que se mantiene residente en memoria mecanismos de gobiernos de la memoria RAM del anfitrión y contacto con VM,s desvinculadas.

VBoxTunctl: Nombre con el que VirtualBox nomina al producto GPL de terceros tunctl presente en los sistemas operativos GNU/Linux y que permite manipular los interfaces de red del sistema a la conveniencia de VirtualBox.

    Es el grupo A) el que vamos a trabajar en las prácticas asociadas a este director. Son los comandos que un administrador de sistemas debe conocer para manejar con éxito la infraestructura virtual. No necesitamos el panel gráfico para hacerlo ya que no proporciona versatilidad ni capacidad de trabajo con infraestructura masiva. Sólo emplearemos el ventaneo (que no el panel completo) cuando no sea posible hacerlo de otra forma.

    El alumno debe entender que lo que aquí aprenda gracias a la lectura comprensiva de los documentos proporcionados y las  prácticas de taller es completamente extrapolable a cualquier otro producto de virtualización de infraestructura, algo con lo que seguro que tendrá que lidiar en su vida profesional; llámese VirtualBox, VMware  o AWS.

    Las líneas de ordenes de más abajo son propuestas muy apetitosas para copiar y pegar allí donde el alumno necesite hacer algo parecido, nada recomendable desde el punto de vista del aprendizaje, por el contrario, es muy enriquecedor hacer una lectura comprensiva de los documentos enlazados en cada cabecera antes de los ejemplos;  muestran funcionalidades y formas de operar que se tendrán que usar en las prácticas y que no se dejan ver en los ejemplos. No seas perezoso/a y léelo, mejor todavía, compréndelo antes de hacer Ctrl+C -> Ctrl+V.
Creación de una máquina virtual sobre la que instalar el S.O. elegido llegado el momento.
(1) VBoxManage createvm --name vmtest01 --ostype Debian_64 --register
(2) VBoxManage showvminfo vmtest01 | less.

(1) Crea la VM de nombre vmtest01 con la configuración hardware por defecto asociada al S.O. operativo elegido (Debian_64) y se realiza el registro del UUID que automáticamente se le asociará a la VM (--register); El registro implica el reconocimiento de la VM por parte de VirtualBox, sin registro no existe la VM.
(2)
Visualiza las características de la VM recién creada (por aquello de verificar lo que estamos haciendo).


(1) VBoxManage modifyvm vmtest01 --memory 1024
(2) VBoxManage showvminfo vmtest01 | grep  Memory

(1) Dimensiona la memoria RAM de la VM (siempre en Mb).
(2)
Verificación que la operación.

(1) VBoxManage storagectl vmtest01 --name vmtest01-sata0 --add sata
(2) VBoxManage showvminfo vmtest01 | less

(1) Añade una  controladora SATA donde conectar discos y/o unidades ópticas de DVD/CDROM cuando sea necesario; se nomina como vmtest01-sata0.
(2)
Verificación de la operación.

(1) VBoxManage createmedium disk --filename "/REPO/VDIs/vmtest01-hd01" --size 8000 --format VDI --variant Standard;
(2) VBoxManage storageattach vmtest01 --storagectl vmtest01-sata0 --type hdd --port 0 --medium /REPO/VDIs/vmtest01-hd01.vdi


(1) Crea un disco virtual de nombre vmtest01-hd01 en el directorio indicado, con 8Gb de tamaño (sólo se puede expresar en Mb), de tipo VDI y variante Standard (dinámico o COW).
(2) Conecta a la controladora SATA (vmtest01-sata0) de la vm vmtest01 el disco creado con la línea de ordenes (1), obsérvese que todos los modificadores largos proporcionados son obligatorios cuya explicación la puede encontrar el alumno aquí.

Creación de una red NAT para posteriores vinculaciones de los interfaces de red (NIC) de las VM,s

(1) VBoxManage natnetwork add --netname nat-test --network 10.0.11.0/24 --enable
(2) VBoxManage natnetwork list
(3) VBoxManage natnetwork modify --netname nat-test --port-forward-4 ssh:tcp:[]:2222:[10.0.11.10]:22
(4) VBoxManage list natnets

(1) Crea un servicio de Network Address Translation (red NAT) con capacidad de reenviar puertos en la dirección de red 10.0.11.0/24 y habilita dicho servicio.
(2) Verifica la operación.
(3) Inserta en la red NAT de nombre
nat-test una regla de reenvío de puertos desde la IP de la máquina anfitrión (no es necesario hacer mención de dicha IP si es única en el anfitrión) al puerto 22 de una ip (10.0.11.10) del pool de la red NAT.
(4)
Visualiza las red NAT disponibles con todas sus características expuestas (incluido el reenvío de puertos configurado).

Vinculación de un NIC de una VM a una  red NAT

   
(1) VBoxManage list natnets
(2) VBoxManage modifyvm vmtest01 --nic1 natnetwork --nat-network1 nat-test
(3) VBoxManage showvminfo vmtest01 | less
(1) Visualiza las red NAT disponibles con todas sus características expuestas (incluido el reenvío de puertos configurado).
(2) Vincula el nic1 de la VM vmtest01 a la red NAT nat-test. Téngase en cuenta que esta red NAT tiene configurado el reenvío []:2222:[10.0.11.10]:22, por tanto, si la VM vmtest01 se configura con IP fija 10.0.11.10 podremos acceder a ella via ssh desde el exterior con el comando ssh -p 2222 <usuario>@<ip-anfitrion>
(3) Verificación de la operación anterior


    Lo visto anteriormente nos da una idea de como gestionar una pequeña parte del universo de la infraesructura virtual desde la CLI (Command Line Interface). Ha quedado claro que no se necesita una GUI para trabajar con todos los objetos que lo conforman y se ha visto una muestra de operaciones de creación, asignación y modificación de máquinas virtuales, medios virtuales y redes virtuales.

    Ahora toca hablar de como arrancar e interactuar con las VM,s usando instrumentos de bajo consumo de recursos tanto en la máquina anfitrión como en el puesto de trabajo del sysadmin. En el caso de VirtualBox el instrumeno de llama VRDP, este protocolo permite abrir una ventana contra la máquina virtual como si de un monitor físico conectado a una máquina física se tratara.
   
    No es exclusivo de VirtualBox, se trata de un antiguo protocolo que, entre otras cosas, hace que funcione el "Escritorio remoto de MS Windows". Para ponerlo en pie en las máquinas sostenidas por VirtualBox  hay que hacer lo siguiente:

vboxheadless -startvm VM-name -v on
  • En el puesto de trabajo, o allí desde donde se desee visualizar la ventana contra la vm, ejecutar un cliente de remote-desktop. Hay muchos productos de la clase remote-desktop. En MS windows, ya por defecto en el sistema, existe el comando de consola mstsc y en GNU/Linux podemos utilizar el comando rdesktop o rdesktop-vrdp, basta con argumentarlos con la IP del anfitrión y el puerto donde escucha el servidor VRDP, por defecto el 3389 (rdesktop-vrdp 192.168.50.14:3389). Para cambiar el puerto donde escucha el servidor VRDP, algo necesario si ejecutamos simultaneamente varias vm,s en el mismo anfitrión, se incorpora el modificador -e al comando vboxheadless. 
vboxheadless -startvm VM-name -v on -e "TCP/Ports=3377"

  • Remmina es un aplicativo con versiones compatibles para MS-Windows y GNU/Linux que proporciona al usuario un cliente gráfico multiprotocolo para conectar vía RDP, VNC, XDMCP o Spice con máquinas remotas haciendo las veces de monitor. Este producto sustituye de una forma vistosa y amigable a los comandos de consola indicados en el parrafo anterior.
  • Atención con el "extension-pack VNC para VirtualBox", el cual, colisiona con la funcionalidad VRDP proporcionada por  VirtualBox Extension Pack si no se configuran debidamente ambos entornos (quedaría por ver como se hace esto). A la fecha de hoy (09/02/2022), según informa el sitio oficial de virtualbox, el paquete VNC es experimental, por tanto, no es recomendable instalarlo. VRDP es más que suficiente para el acceso remoto al terminal de consola de una VM ejecutada con vboxheadless


Amplio repositorio de documentos para estudiantes y profesionales de TI