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.

¿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.

  1. Descargá y ejecutá PuttyGen.
  2. Click en el botón «Generate».
  3. 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)
  4. 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.

  1. Ejecuta: ssh-keygen -t rsa. Para una llave más segura de 4096-bit key, ejecutá: ssh-keygen -t rsa -b 4096
  2. Presioná enter cuando te pregunte en donde querés guardar la llave (esto usará la ubicación por default).
  3. Introducí un passphrase para tu llave. (Opcional)
  4. 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 [email protected] -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.

Apuntes IT - Compartiendo conocimiento.
Tech Nerd theme designed by Siteturner
Share
Share