Crear y utilizar una IMAGEN CLOUD PERSONALIZADA en VIRTUALBOX
A partir de la versi贸n 20.04 de Ubuntu se dej贸 de distribuir la versi贸n mini.iso y fue reemplazada por las versiones de Ubuntu Cloud. En este art铆culo te muestro la forma en que podes utilizarla localmente y personalizarla.
Luego de la serie de art铆culos y videos destinados a la utilizaci贸n de VPS Gratis de Google y de Oracle, vi que muchos de los visitantes y suscriptores a Nuestro Canal de Youtube comentaban el problema que ten铆an para suscribirse por no contar con una tarjeta de cr茅dito que fuera aceptada por estas compa帽铆as. Decid铆 publicar esta gu铆a donde se explica el modo de personalizar una imagen cloud de Ubunutu Minimal 20.04, las mismas que se utilizan en los art铆culos mencionados, y de este modo poder realizar algunas pruebas en una m谩quina local utilizando VirtualBox.
La soluci贸n parte de una imagen en la nube, como se sugiere en una de las publicaciones sobre el tema (C贸mo hacer una instalaci贸n m铆nima del 20-04), el procedimiento se puede utilizar en versiones posteriores de esa imagen o utilizar im谩genes cloud de otras distribuciones Linux.
脥ndice de art铆culo
驴Por qu茅 descartar la soluci贸n basada en mini.iso?
En pocas palabras, la nueva imagen cloud es m谩s r谩pida de ejecutar y devuelve una m谩quina virtual que probablemente est茅 mejor configurada para su uso en un entorno VirtualBox. Adem谩s, el proceso puede estar completamente automatizado (ver esto o esto), mientras que el anterior requiere una instalaci贸n manual que lleva mucho tiempo.
Requisitos
- El procedimiento se realizar谩 en una distribuci贸n Linux, en mi caso utilizo Linux Mint 20.
- Tener instalado y funcionando VirtualBox, en mi caso utilizo la versi贸n 6.1
- Muchas ganas de aprender nuevas metodolog铆as.
- Todas la herramientas necesarias que no est谩n listadas aqu铆 se indicar谩 el modo de hacerlo en el presente art铆culo.
Instalar la imagen cloud
Las im谩genes cloud est谩n disponibles en varias fuentes. Como se coment贸, esta gu铆a utiliza las del sitio oficial de Ubuntu, que ofrece varios sabores. He seleccionado la imagen cloud server 20.04 en formato OVA, que es f谩cil de usar en VirtualBox. Siguiendo este enlace podr谩s encontrar otros formatos y el repositorio.
Descarg谩 la imagen y cre谩 la VM usando Archivo -> Importar aplicaci贸n virtual en la GUI de VirtualBox, sin iniciarla.

Puede ser conveniente cambiar el nombre en la descripci贸n (doble clic en la l铆nea de nombre) por uno m谩s simple, como 禄minimal-focal禄.

Configurar la M谩quina Virtual
Networking
En la configuraci贸n de red de la M谩quina Virtual, configur谩 el adaptador de red como 芦NAT禄, y expandiendo la configuraci贸n 芦Avanzada禄 redirig铆 el puerto de host 2222 (o el que desees) al puerto 22. De esta manera, tu VM estar谩 conectada a Internet y accesible a trav茅s de ssh.

Almacenamiento
En la configuraci贸n de storage de la m谩quina virtual:
- Elimin谩 el controlador de disquete.
- Cre谩 una nueva unidad de DVD y dejala vac铆a.

Configuraci贸n de variables de la imagen cloud
Cre谩 una imagen .iso que contenga los archivos que cloud-init usar谩 cuando se inicie la VM. En el directorio que desees, recomiendo que generes un directorio de trabajo, debes generar dos archivos de configuraci贸n en formato YAML.
El primer archivo debe nombrarse como meta-data que indicar谩 el nombre de la instancia y el nombre del servidor resultante:
instance-id: minimal-focal local-hostname: apuntesit
El segundo archivo debe nombrarse como user-data donde se indicar谩 el nombre de usuario que utilizar谩 la imagen cloud resultante. Tambi茅n se indicar谩 que ese usuario tendr谩 acceso a permisos sudo y el int茅rprete de comandos bash:
#cloud-config users: - name: apuntesit sudo: ['ALL=(ALL) NOPASSWD:ALL'] shell: /bin/bash
Si quer茅s profundizar en este tipo de configuraciones podes consultar el manual para obtener m谩s detalles.
A continuaci贸n, cre谩 el archivo .iso (por ejemplo, ciconf.iso) con el comando indicado.
$ cloud-localds ciconf.iso user-data meta-data
El comando 禄cloud-localds禄 est谩 en el paquete 芦cloud-image-utils芦, que (en Debian / Ubuntu) se instala como se muestra a continuaci贸n:
$ sudo apt install cloud-image-utils
En la secci贸n 芦Almacenamiento禄 de la GUI de VirtualBox, carg谩 el archivo .iso (ciconf.iso) que acabas de generar en la unidad IDE que creaste en el paso anterior.

Inici谩 la VM y esper谩 el inicio de sesi贸n de la terminal, no vas a poder iniciar sesi贸n ya que no ten茅s credenciales (contrase帽a) de usuario para poder acceder al sistema. Por lo que vas a hacer lo 煤nico que pod茅s hacer, apagar la VM accediendo a M谩qina -> Apagar ACPI.

Definir credenciales de usuario
Para poder definir las credenciales del usuario y cargar los certificados de acceso ssh a la imagen cloud es necesario montar el disco de la m谩quina virtual en el sistema local.
Para hacer esto debes ingresar al directorio del disco virtual de la VM (podr铆a ser ~/VirtualBox VMs/minimal-focal
) y mont谩 la imagen del disco de la VM en el sistema local. Para que esto funcione se necesita el paquete qemu, que se instala como se indica a continuaci贸n.
$ sudo apt install qemu
Luego, para montar la imagen del disco de la VM, procede de la siguiente manera:
$ sudo modprobe nbd max_part=8 $ sudo qemu-nbd -c /dev/nbd0 ubuntu-focal-20.04-cloudimg.vdi $ sudo mount /dev/nbd0p1 /mnt
El 芦ubuntu-focal-20.04-cloudimg.vdi禄 se refiere al nombre del archivo de la imagen de disco, reemplazalo con la tuya. Al final, el sistema de archivos de la VM est谩 disponible en el directorio /mnt
.
Para poder crear la contrase帽a del usuario se debe ejecutar 芦chroot禄 para poder acceder al sistema de archivos de la VM. A continuaci贸n se muestran los pasos para realizar esto.
$ sudo chroot /mnt $ passwd user $ sync $ exit
Reemplaz谩 芦user禄 con el nombre de usuario configurado en el paso anterior. Si bien las posibilidades de 芦romper禄 el sistema local utilizando el comando 芦chroot禄 es muy baja, debes tener algo de cuidado al utilizarlo.
Solo cuando hayas salido con seguridad del entorno 禄chroot禄 (verifica dos veces), copi谩 tu clave p煤blica (supongo que ten茅s una), dentro del sistema de archivos de la VM como se muestra.
$ mkdir /mnt/home/user/.ssh $ cat ~/.ssh/id_rsa.pub >> /mnt/home/user/.ssh/authorized_keys
El paso anterior es opcional pero extremadamente conveniente. En caso de que no tengas una clave p煤blica, a continuaci贸n te dejo un peque帽o instructivo de c贸mo crearla en Windows y en Linux.
Creando una SSH key en Windows
La manera m谩s simple de crear una SSH key en Windows es usando聽puttygen. Si quer茅s conocer con mayor detalle el uso de esta herramienta, pod茅s leer este art铆culo donde se explican todos los beneficios que ofrece.
- Descarg谩 y ejecut谩 PuttyGen.
- Click en el bot贸n 芦Generate禄.
- Para obtener seguridad adicional, pued茅s ingresar una key passphrase. Esto ser谩 necesario para usar la clave SSH, y evitar谩 que alguien con acceso a tu key file utilice la clave. (Opcional)
- Una vez que se ha generado la clave, hac茅 clic en 芦Save Private Key禄. Asegurate de guardarlo en alg煤n lugar seguro, ya que no es posible recuperar este archivo si se pierde
Creando una SSH key en Linux
Las herramientas para crear y usar SSH son est谩ndar y deben estar presentes en la mayor铆a de las distribuciones de Linux. Con los siguientes comandos, pod茅s generar la clave ssh.
- Ejecuta:
ssh-keygen -t rsa
. Para una llave m谩s segura de 4096-bit key, ejecut谩:ssh-keygen -t rsa -b 4096
- Presion谩 enter cuando te pregunte en donde quer茅s guardar la llave (esto usar谩 la ubicaci贸n por default).
- Introduc铆 un passphrase para tu llave. (Opcional)
- Asegurate de guardar el archivo
~/.ssh/id_rsa
y el archivo~/.ssh/id_rsa.pub
. No se puede recuperar si se pierde.
Cuando termines, desmont谩 la imagen del disco de la m谩quina virtual.
$ sync $ sudo umount /dev/nbd0p1 $ sudo qemu-nbd -d /dev/nbd0 $ sudo rmmod nbd
Si olvid谩s desmontar, el disco de la m谩quina virtual se da帽ar谩 y deber谩s reiniciar todo. Verifique dos veces antes de continuar.
Preparate para la personalizaci贸n
Ya estamos en el 煤ltimo paso. S贸lo debes iniciar la m谩quina desde la interfaz GUI de VirtualBox e iniciar sesi贸n con el nombre de usuario 芦apuntesit禄, si seguiste la gu铆a, y la contrase帽a definida.

Tambi茅n se puede acceder a la VM desde la l铆nea de comandos de tu PC accediendo por ssh utilizando la clave privada correspondiente a la clave p煤blica cargada en la imagen cloud.
$ ssh apuntesit@localhost -p 2222
Reemplaz谩 芦apuntesit禄 con el nombre de usuario que elegiste, 2222 es el n煤mero de puerto configurado en el primer paso. Record谩 utilizar la opci贸n 芦-i禄 para indicar el directorio donde se encuentra la clave privada correspondiente a la clave p煤blica que contiene la VM.

Luego us谩 la forma que desees (sugiero 芦ssh禄) para terminar el trabajo.
Inici谩 sesi贸n en la VM y, usando un editor de texto como puede ser el vi, correg铆 un detalle que falta en el archivo 芦/etc/hosts
禄 en la VM y agreg谩 al final de la l铆nea 芦localhost禄 el nombre de la nueva m谩quina, en el ejemplo 芦apuntesit禄.

Luego pod茅s hacer los primeros pasos de actualizaci贸n del sistema antes de comenzar a instalar los servicios y aplicaciones que quieras correr en el nuevo servidor.
$ sudo apt update $ sudo apt upgrade
Opcionalmente pod茅s personalizar el teclado que utilizas para podes trabajar con mayor comodidad. Tambi茅n es recomendable instalar los m贸dulos extras que no contiene la imagen cloud. La utilidad tasksel que es 煤til para la personalizaci贸n tambi茅n es recomendable instalar.
$ sudo dpkg-reconfigure keyboard-configuration $ sudo apt install linux-modules-extra-$(uname -r) tasksel
No hay excusas!
Si por alguna raz贸n no pod茅s crear tu propia imagen, no ten茅s excusas. Te comparto la imagen generada en formato OVA para que puedas importarla en tu VirtualBox y ya ten茅s tu propia imagen para poder empezar a realizar tus pruebas y proyectos.
Pod茅s descargar todo lo necesario desde este repositorio.
Comprobaci贸n final y conclusiones
Con el comando 芦tasksel禄 pod茅s instalar varios tipos de paquetes, por ejemplo un servidor LAMP. Pero pod茅s decidir instalar cualquier otra colecci贸n de paquetes y servicios, al igual que como suced铆a con el mini.iso.
El proceso descrito anteriormente es conceptualmente m谩s dif铆cil que el realizado con el mini.iso, pero es m谩s r谩pido, tardando alrededor de 10 minutos en tener la m谩quina lista para la personalizaci贸n. Por el contrario, debes descargar un VDI que es m谩s grande que el mini.iso.
Finalmente, la tecnolog铆a en la nube lleg贸 para quedarse, por lo que espero que esta modalidad est茅 disponible para varias versiones de Ubuntu despu茅s de que finalmente se abandone el mini.iso.
Como siempre, comparto el video publicado en nuestro canal de Youtube donde se muestra en detalle el proceso indicado en este art铆culo.
Te invito a que te suscribas a nuestro canal de Youtube para no perderte ning煤n video. Tambi茅n pod茅s seguirme en Twitter para enterarte antes que nadie el material que estamos preparando y seguir compartiendo el conocimiento.
Trabajando desde el a帽o 1990 en el mercado de la tecnolog铆a. T茅cnico en Electr贸nica. Administrador de Sistemas. Administrador de Redes. T茅cnico en telecomunicaciones. T茅cnico de plataforma satelital. Incursiono en el Software Libre desde mediados del 1997. Desde entonces utilic茅 varias distribuciones GNU/Linux comenzando con un RedHat 5.0
Form茅 parte del Core Team y miembro del grupo de desarrollo del Proyecto UTUTO.