📋 Proxmox: Template & Automazione
“Installa una volta, distribuisci all’infinito.”
::: info Un Template è una macchina virtuale “congelata” che funge da calco. Non può essere avviata, ma può essere usata per creare nuove istanze (Cloni) istantaneamente. Questo elimina la necessità di passare ogni volta attraverso l’installer del sistema operativo. :::
1. Full Clone vs. Linked Clone
Quando cloni un template, Proxmox ti chiede di scegliere tra due strategie:
- Full Clone (Copia Completa):
- Cos’è: Una copia esatta e indipendente del disco del template.
- Pro: Se il template viene cancellato, il clone continua a funzionare. Performance di lettura/scrittura costanti.
- Contro: Occupa molto spazio sul disco (se il template è di 20GB, ogni clone userà 20GB).
- Linked Clone (Clone Collegato):
- Cos’è: Il clone legge i dati base dal template e scrive solo le modifiche su un piccolo file separato.
- Pro: Creazione istantanea (meno di 1 secondo) e risparmio enorme di spazio.
- Contro: Dipende dal template; se cancelli il template, tutti i cloni smettono di funzionare.
2. Creare il tuo primo Template (Linux)
Ecco il workflow per creare una base solida:
- Crea una VM base: Installa la tua distribuzione preferita (es. Ubuntu Server).
- Configurazione Standard:
- Aggiorna il sistema (
apt update && apt upgrade). - Installa i QEMU Guest Agent (
apt install qemu-guest-agent). Questo permette a Proxmox di vedere l’IP della VM e di spegnerla correttamente. - Pulisci la cache e i log per risparmiare spazio (
apt clean).
- Aggiorna il sistema (
- Conversione: Tasto destro sulla VM -> Convert to Template.
3. Cloud-Init: La magia dell’automazione
Il problema dei cloni è che hanno tutti lo stesso nome utente, la stessa password e lo stesso IP del template. Cloud-Init risolve questo problema.
- Per il Neofita: Cloud-Init è un assistente che configura la VM al primo avvio. Puoi impostare nome, password e chiavi SSH direttamente dall’interfaccia di Proxmox, senza mai entrare nella VM.
- Per l’Esperto: È possibile iniettare script di configurazione personalizzati (User-data) per installare automaticamente Docker, Python o le tue librerie C++ non appena la VM viene creata.
Come aggiungere Cloud-Init:
- Nella VM (prima di convertirla in template), aggiungi un dispositivo CloudInit Drive (sezione Hardware).
- Nella sezione Cloud-Init della VM, imposta i parametri desiderati.
- Rigenera l’immagine cliccando su Regenerate Image.
4. Automazione via API (Software Engineer Perspective)
Dato che sei uno sviluppatore, non vorrai cliccare sulla GUI per sempre. Proxmox espone una potente API JSON.
- Libreria consigliata:
proxmoxer(Python). - Esempio di utilizzo: Puoi scrivere uno script Python che, con un solo comando, crea 3 VM per un cluster di test, assegna loro gli IP e le avvia.
# Pseudo-codice concettuale
from proxmoxer import ProxmoxAPI
proxmox = ProxmoxAPI('192.168.1.100', user='root@pam', password='password', verify_ssl=False)
# Clonazione di un template (ID 100) in una nuova VM (ID 200)
proxmox.nodes('pve01').qemu(100).clone.create(newid=200, name='dev-environment-01')
💡 Tips & Best Practices
::: tip PER IL NEOFITA Crea un template per ogni sistema operativo che usi spesso (es. uno per Ubuntu, uno per Debian, uno per Windows). Ti farà risparmiare ore di noiosa installazione nel lungo periodo. :::
::: warning PER L’ESPERTO
Prima di convertire una VM in template, esegui sempre il comando truncate -s 0 /etc/machine-id (su Linux). Questo assicura che ogni clone generi un nuovo identificativo univoco, evitando conflitti di rete (DHCP) e di log.
:::