Introducción
El builder de proxmox para packer, nos permitirá crear un template desde un archivo .json. Adicionalmente para poder descargar el archivo desatendido durante la instalación, packer levantara un servidor web provisional con un puerto random.
Requisitos
La máquina desde donde ejecutaremos Packer, tiene que cumplir los siguiente requisitos:
- Acceso a la consola de proxmox vía web (por defecto por el puerto 8006)
- Para hacerlo fácil, packer tiene que estar en la misma VLAN en el cual provisionamos el template.
- La VLAN anterior tendrá que tener DHCP
Instalación
Primero descargamos packer de la web oficial, es un binario precompilado.
https://www.packer.io/downloads
Lo descomprimimos y ubicamos en el siguiente directorio:
/opt/packer/
Configuración
Descargamos los ficheros .json de la siguiente ubicación:
cd /opt/packer/ git clone https://github.com/danielcastropalomares/packer-pmx-debian10.git
En este ejemplo no necesitamos descargar previamente la ISO, ya que lo realizará packer y la subirá automáticamente a proxmox. Necesitamos conocer la URL de descarga y también el checksum de esta:
debian.json
"iso_checksum": "sha256:ab3763d553330e90869487a6843c88f1d4aa199333ff16b653e60e59ac1fc60b", "iso_storage_pool": "local", "iso_url": "https://cdimage.debian.org/debian-cd/current/amd64/iso-cd/debian-10.4.0-amd64-netinst.iso",
Lo único a modificar es cambiar el iso_storage_pool por el repositorios de ISO que tengas en tu caso:
variables.json
"var_storage_pool": "local-lvm"
El fichero variables contiene los siguientes parámetros:
{ "proxmox_username": "root@pam", "proxmox_password": "XXXXXXXXXXXXXX", "var_proxmox_url": "https://192.168.0.222:8006/api2/json", "var_ssh_password": "XXXXXXXXXXXXXX, "var_ssh_username": "root", "var_template_name": "debian-10-template", "var_storage_pool": "local-lvm" }
- proxmox_username: usuario con acceso a la consola web de proxmox.
- proxmox_password: password para acceder la consola web de proxmox.
- var_proxmox_url: URL consola web proxmox.
- var_ssh_password: password que se utilizará para conectarse una vez finalizada la instalación de Debian.
- var_ssh_username: usuario que se utilizará para conectarse vía SSH una vez finalizada la instalación de Debian.
- var_template_name: nombre final del template.
- var_storage_pool: ubicación del storage pool donde se ubican las ISO.
Durante la instalación desatendida, se creará tanto el password de root como un usuario adicional, a partir de ahora lo llamaremos «user». En mi caso, al tratarse de una POC, utilizare el mismo password tanto para root como para el usuario «user». Para generar el hash del password de root y del usuario durante la instalación:
printf "3LyWccqNZ63ZNtnY" | mkpasswd -s -m md5
Lo configuramos en el fichero http/preseed.cfg, tanto para el usuario como root como user:
d-i passwd/root-password-crypted password $1$DHUlEcsI$D/lF6448SdWmkFceDVD6E0 d-i passwd/user-password-crypted password $1$DHUlEcsI$D/lF6448SdWmkFceDVD6E0
Aqui indicaremos el nombre que le daremos dar al nuevo usuario, en mi caso «user»:
d-i passwd/user-fullname string user d-i passwd/username string user
Build
Una vez que hemos finalizado la definición de los parámetros del json y de los ficheros para la instalación de Debian, iniciamos el build:
Podemos seguir el avance de la instalación con la consola de proxmox. Si todo ha salido bien, podremos ver el template creado:
Deja una respuesta