Saltar a contenido

Cloud-init

image.png

Cloud-init es el estándar de la industria para la inicialización y personalización automática de máquinas virtuales (VM) en la nube durante su primer arranque. Utiliza scripts para configurar automáticamente redes, usuarios, claves SSH, paquetes y almacenamiento, permitiendo transformar imágenes de sistema base en servidores listos para producción sin intervención manual.

Características y Usos Clave:

  • Automatización: Ejecuta tareas de configuración al inicio, como definir el nombre de host, actualizar paquetes o montar volúmenes

  • Archivos de Configuración: Utiliza archivos #cloud-config (YAML) o scripts de shell para definir las acciones.

  • Compatibilidad: Soportado por la mayoría de proveedores de nube (AWS, Azure, GCP, OpenStack, OCI) y sistemas operativos Linux (Ubuntu, CentOS, Red Hat, Fedora, etc.).

  • Personalización: Permite crear usuarios específicos, gestionar grupos y habilitar comandos sudo para el acceso.

Cómo funciona:

  1. Arranque: La VM se inicia y busca datos de usuario ("user data") proporcionados al proveedor de la nube.
  2. Ejecución: Cloud-init lee estos datos y aplica la configuración personalizada.
  3. Finalización: La máquina queda configurada según los requisitos definidos.

Proxmox

Descarga imagen

wget https://cloud-images.ubuntu.com/resolute/current/resolute-server-cloudimg-amd64.img

Crear VM

qm create 9001 --name "ubuntu-26.04-cloudinit" --memory 1024 --cores 1 --net0 virtio,bridge=vmbr0
qm importdisk 9001 resolute-server-cloudimg-amd64.img local-lvm
qm set 9001 --scsihw virtio-scsi-pci --scsi0 local-lvm:vm-9001-disk-0
qm set 9001 --ide2 local-lvm:cloudinit
qm set 9001 --boot c --bootdisk scsi0
qm set 9001 --serial0 socket --vga serial0
qm set 9001 --agent enabled=1

Convertir en plantilla

qm template 9001

Configurar cloud-init en nuevas VMs

Desde la interfaz web de Proxmox:

  1. Clona la plantilla a una nueva VM
  2. Ve a la VM nueva > Hardware > Cambia la configuración según necesidad
  3. Ve a la VM nueva > "Cloud-init" > configura:

      • Usuario
      • Contraseña y/o clave SSH
      • Configuración de red (IP estática o DHCP)
      • DNS

Fallo

Existe un fallo en Ubuntu que hace que una VM desplegada se retrasa en el arranque hasta que systemd-networkd considera que la red está configurada. Por defecto espera a que las interfaces gestionadas estén configuradas y a que al menos una esté “online”; si no lo consigue, acaba en timeout, normalmente a los 120 segundos con el mensaje:  Job systemd-networkd-wait-online.service/start running

Eso significa: systemd está esperando una condición de red que no se cumple según su configuración, aunque la interfaz ya tenga IP. cloud-init ha generado configuración para eth0, pero el sistema opera con ens18 y termina usando una configuración runtime distinta. La red llega a funcionar, pero el servicio de espera no queda satisfecho y retrasa el arranque.

El problema es que Proxmox/cloud-init, por compatibilidad histórica, trabaja muy bien con nombres clásicos eth0, eth1, etc. Pero Ubuntu moderno usa nombres predecibles tipo: ens18, enp0s18

Proxmox incluso advierte que, para mejor compatibilidad en imágenes cloud-init, conviene revertir a nombres clásicos eth0, eth1, etc.

Forzar nombres clásicos de interfaz

Edita GRUB:

sudo vi /etc/default/grub

Busca esta línea:

GRUB_CMDLINE_LINUX=""
Cámbiala por:

GRUB_CMDLINE_LINUX="net.ifnames=0 biosdevname=0"

Aplica los cambios

sudo update-grub

HPE Proliant

image.png

Hay algunas herramientas de HPE que pueden ser útiles en linux Se puede encontrar el Repositorio de linux para HPE : HPE Software Delivery Repository

Repository Listing

Por ejemplo, para instalar HPE Agentless Management Service:

wget https://downloads.linux.hpe.com/SDR/repo/mcp/debian/pool/non-free/amsd_4.2.0-2046.12-ubuntu24_amd64.deb
sudo apt install -f ./amsd_4.2.0-2046.12-ubuntu24_amd64.deb