Iso de Proxmox Automatica
🏛️ Cómo crear una ISO de Proxmox VE con instalación totalmente automática (y sobrevivir a un HP Gen8)
Crear una ISO de Proxmox que instale sola, configure el sistema y deje todo listo en el primer arranque no es complicado... una vez que sabes cómo. Aquí te cuento el proceso, los errores que cometí y las soluciones.
🧰 La herramienta oficial
Proxmox tiene una herramienta oficial para esto:
bash
apt install proxmox-auto-install-assistant xorriso
Generar la ISO es tan simple como:
bash
proxmox-auto-install-assistant prepare-iso proxmox-ve_9.1-1.iso \
--fetch-from iso \
--answer-file answer.toml \
-o proxmox-ve-auto.iso
Pero la magia está en el archivo answer.toml y en el script de primer arranque.
📝 El archivo answer.toml
Define todo: idioma, zona horaria, contraseña (hasheada), tipo de disco, red...
toml
[global]
keyboard = "es"
country = "es"
fqdn = "proxmox.local"
timezone = "Europe/Madrid"
root-password-hashed = "$y$j9T$..."
[network]
source = "from-dhcp"
[disk-setup]
filesystem = "ext4"
filter.ID_MODEL = "*"
[disk-setup.lvm]
swapsize = 8
maxroot = 96
🔥 El script de primer arranque (first-boot)
Lo más potente: un script que se ejecuta en el primer boot después de instalar. Puede hacer de todo:
- ✅ Deshabilitar los repos enterprise
- ✅ Añadir el repo no-subscription con la clave GPG correcta
- ✅ Generar locale
- ✅ Configurar la consola
- ✅ Deshabilitar DHCP en interfaces físicas
- ✅ Instalar paquetes (htop, btop, iperf3, etc.)
Importante: el flag --on-first-boot en el CLI Y la sección [first-boot] en el answer.toml son ambos necesarios. Sin los dos, el script se embebe en la ISO pero nunca se ejecuta. Sin errores, sin avisos.
🧨 La clave GPG (error tonto que te ahorrarás)
Si usas la versión 9.x de Proxmox (basada en Debian Trixie), la clave GPG oficial es:
Signed-By: /usr/share/keyrings/proxmox-archive-keyring.gpg
No uses proxmox-release-bookworm.gpg (es para PVE 8.x) ni proxmox-release-trixie.gpg. La clave oficial es proxmox-archive-keyring.gpg. Si usas otra, apt-get update falla y el first-boot se rompe.
⚠️ El locale, ese gran olvidado
Si no generas es_ES.UTF-8 en el primer arranque, los servicios de Proxmox (pveproxy, pvedaemon) fallan al iniciar con errores extraños de Perl:
PVE/Ticket.pm did not return a true value
Bad name after full_label' at IO/Socket/SSL.pm
Y la interfaz web no carga. La solución: locale-gen es_ES.UTF-8 en el first-boot.
🖥️ El caso del HP ProLiant MicroServer Gen8
Aquí viene lo divertido. Este servidor de 2013 tiene una trampa en el puerto SATA del lector de DVD (puerto ODD). El controlador NCQ (Native Command Queuing) de ese puerto falla con Linux y produce errores I/O que acaban montando el sistema de archivos en sólo lectura.
El resultado: instalas todo perfecto, el servidor arranca, y al rato el sistema se pone en read-only por errores ata5: READ FPDMA QUEUED.
La solución: desactivar NCQ en ese puerto añadiendo esto a los parámetros del kernel:
libata.force=5.00:noncq
En el first-boot:
bash
sed -i 's/GRUB_CMDLINE_LINUX_DEFAULT="/GRUB_CMDLINE_LINUX_DEFAULT="libata.force=5.00:noncq /' /etc/default/grub
update-grub
Esto no afecta al rendimiento del disco y funciona con cualquier disco (HDD o SSD). Y ojo, este fix solo es necesario en el Gen8 — cualquier otro servidor o PC ignora el parámetro sin problemas.
📦 La ISO definitiva
Después de varios intentos, la ISO definitiva incluye:
- Instalación automática completa
- First-boot que configura locale, repos, consola, red y paquetes
- Fix NCQ para HP Gen8
- Clave GPG oficial verificada
Y lo mejor: la misma ISO sirve para cualquier servidor. Si no es un Gen8, el fix NCQ se ignora y todo funciona igual.
Comentarios
Publicar un comentario