
En esta entrada veremos como preparar las plantillas base que usaremos a la hora de interactuar con Terraform en la creación de las máquinas virtuales o VMs. Para ello usaremos Ubuntu y Debian, las dos distros más comúnes y que más se usan a la hora de provisionar servidores.
Comencemos con Ubuntu. Nos descargaremos la imagen virtual de cloud-init, y crearemos la plantilla desde acá. El siguiente procedimiento deben ejecutarlo desde dentro del Proxmox:
1 2 3 4 5 6 7 8 9 | cd /opt wget -c https://cloud-images.ubuntu.com/focal/current/focal-server-cloudimg-amd64.img qm create 8000 --memory 2048 --core 2 --name ubu-cloud-tpl --net0 virtio,bridge=vmbr0 qm importdisk 8000 focal-server-cloudimg-amd64.img local-lvm qm set 8000 --scsihw virtio-scsi-pci --scsi0 local-lvm:vm-8000-disk-0 qm set 8000 --ide2 local-lvm:cloudinit qm set 8000 --boot c --bootdisk scsi0 qm set 8000 --serial0 socket --vga serial0 qm template 8000 |
Ahora bien, antes de continuar, recomiendo configurar de acuerdo a nuestras necesidades básicas el cloud-init, después crear la plantilla y clonar.
Y esos comandos? ¿Qué hemos hecho?
Fácil. Después de descargar la imagen de Ubuntu, en este caso 20.04, hemos creado una máquina virtual basado en la imagen y le hemos asignado los recursos necesarios de hardware para que funcione.
- Ok, pero sigo sin entender. ¿En qué me ayuda eso?
Bueno, imagina que cada vez que necesitas usar una máquina virtual, debes crear una de cero, con el iso de instalación de ubuntu, iniciar el instalador, configurar zona horaria, asignar hostname, crear usuario/contraseña, particionar y asignar espacios en disco, configurar red y dns, configurar repositorios, seguir un tedioso instalador a que termine de descargar paquetes para que la instalación sea como deseas. Mientras que, de la forma que te explico, ya tienes la imagen lista, es sólo clonarla, asignarle los recursos de disco/memoria/procesador, cambiar IP y dns. Encenderla y listo, proceso de 45 segundos, máximo, contra 5~8 minutos de instalación base desde el iso. Entiendes ahora la ventaja? 😉
Dos detalles:
- Un tema necesario aclarar, es el siguiente, antes del paso de crear la plantilla usted puede hacer los cambios que necesite mediante la interfaz del proxmox, esto es a conveniencia del usuario. Un cambio muy común es el espacio en disco, cuando usted crea una plantilla por default, de ubuntu, se le asigna un espacio en disco de 2 gigas. Se recomienda dejar el espacio por default en 2GB, y cuando se clone la máquina virtual, en ese momento se expanda el espacio en disco, basado en la necesidad y el uso que se le va a dar.
- Además, otro tema, usted puede modificar la plantilla, es decir, antes de crearla, es una máquina virtual normalita. Usted la puede encender, quitar y poner lo que necesite, por ejemplo, agregarle programas que necesitará de manera general, por ejemplo:
1 2 3 4 5 6 | sudo apt update ;; sudo apt dist-upgrade -y ;; sudo apt clean sudo apt install -y qemu-guest-agent git rsync wget \ mc net-tools p7zip-full htop iftop bmon screen dnsutils locate \ locales-all iotop atop curl ifenslave vlan sysstat sudo rsync \ tcpdump strace darkstat telnet screen multitail lzma xz-utils \ rar unrar bzip2 ;; sudo apt clean |
Asignar fecha y hora:
1 | sudo timedatectl set-timezone America/Havana |
Habiliar automáticamente los updates:
1 2 | sudo apt install -y unattended-upgrades dpkg-reconfigure --priority=low unattended-upgrades | yes |
Eliminar el machine ID, para cuando reinicie, se le asigne uno nuevo, esto es importante, pues de esta plantilla se clonarán las futuras máquinas virtuales:
1 | rm -f /etc/machine-id /var/lib/dbus/machine-id |
O quitar snapd:
1 | sudo snap list |
Y eliminar todos los snaps, uno por uno:
1 | sudo snap remove lxd |
Y eliminar al final todo rastro de snapd en ese sistema:
1 2 3 4 5 6 7 | sudo apt purge -y snapd sudo rm -rf ~/snap sudo rm -rf /snap sudo rm -rf /var/snap sudo rm -rf /var/lib/snapd sudo rm -rf /var/cache/snapd/ sudo apt autoremove --purge -y snapd gnome-software-plugin-snap |
Después de hecho todos estos pasos, crear la plantilla:
1 | qm template 8000 |
Con Debian el procedimiento es el mismo, lo único que cambia es la imagen:
1 2 3 4 5 6 7 8 | wget -c https://cloud.debian.org/images/cloud/bullseye/latest/debian-11-generic-amd64.qcow2 qm create 9000 --memory 2048 --core 2 --name deb-cloud-tpl --net0 virtio,bridge=vmbr0 qm importdisk 9000 debian-11-generic-amd64.qcow2 local-lvm qm set 9000 --scsihw virtio-scsi-pci --scsi0 local-lvm:vm-9000-disk-0 qm set 9000 --ide2 local-lvm:cloudinit qm set 9000 --boot c --bootdisk scsi0 qm set 9000 --serial0 socket --vga serial0 qm template 9000 |
Y con eso tendremos algo como esto:
Entonces, es cuestión de probar y adaptar a nuestras necesidades. Nos vemos en la parte 3, para seguir ahondando en este tema. Saludos y happy hacking!