Salta al contenuto

Documentazione

Proxmox VE

Proxmox è l’integrazione hypervisor. Crea macchine virtuali clonando un template, segue l’operazione mentre è in corso e mantiene il pannello allineato con ciò che il cluster riporta davvero.

Che cosa serve

Per l’automazione Proxmox non utilizza una password. Si crea un token API: un identificatore in tre parti più un segreto mostrato una sola volta.

  • Host: l’URL di base completo dell’API. Deve essere HTTPS; se viene omessa, la porta 8006 viene inserita automaticamente.
  • Identificatore del token: nel formato user@realm!tokenname, esattamente come lo scrive Proxmox.
  • Segreto del token: il valore che Proxmox mostra una sola volta alla creazione del token.
  • Impronta TLS: il certificato del nodo stesso, non dell’autorità che lo ha emesso.
shell
openssl s_client -connect pve.example.com:8006 </dev/null 2>/dev/null | \
  openssl x509 -noout -fingerprint -sha256
I comandi e l’output del terminale sono in inglese ovunque, nel pannello e in queste pagine. Un solo testo, una sola verità: quello che legge qui è letteralmente ciò che il suo host le restituirà.
Disattivi Privilege Separation sul token, oppure assegni al token autorizzazioni proprie in modo esplicito. Se resta attiva, il token parte senza nessuno dei diritti dell’utente a cui appartiene e ogni chiamata non riesce per un motivo che Proxmox non esplicita.

Impostazioni

Quattro scelte non segrete, nella scheda delle impostazioni. Senza di esse l’integrazione è collegata ma non può creare nulla.

  • Nodo: su quale nodo del cluster costruire. Il pannello propone i nodi che il suo agente ha effettivamente visto; se non ne ha ancora visto nessuno, è possibile digitarne uno.
  • Storage: dove finiscono i dischi delle nuove macchine.
  • Bridge: facoltativo. Viene memorizzato e utilizzato là dove la piattaforma crea una macchina da zero, ma un clone eredita il bridge del template da cui è stato clonato.
  • Intervallo di ID macchina: il blocco di ID VM di Proxmox all’interno del quale Provibr può assegnare.

L’intervallo è il confine di sicurezza

È l’impostazione più importante della pagina. Provibr assegna identificatori soltanto all’interno dell’intervallo che gli viene indicato e non tocca mai nulla al di fuori. Tenga le sue macchine di produzione fuori dall’intervallo e resteranno irraggiungibili, qualunque cosa venga cliccata nel pannello.

Gli identificatori non vengono mai riutilizzati, nemmeno dopo l’eliminazione di una macchina. Una segnalazione di stato in ritardo, proveniente da una macchina ormai sparita, non può quindi mai finire su una macchina nuova.
Un template collegato come sistema operativo deve trovarsi fuori dall’intervallo, altrimenti il pannello lo rifiuta: all’interno dell’intervallo, prima o poi il meccanismo di assegnazione consegnerebbe l’identificatore del template stesso e l’ordine successivo clonerebbe da sé stesso.

Come viene creata una macchina

Creare una macchina significa una sola operazione di clonazione, seguita da un piccolo numero di chiamate di configurazione. Il pannello segue quell’operazione e mostra l’avanzamento reale là dove Proxmox lo comunica.

  1. Clonare il template scelto sul nodo indicato nelle impostazioni.
  2. Ampliare il disco di avvio fino alla dimensione ordinata. Un disco può soltanto crescere; se il template è già più grande, la macchina mantiene la dimensione del template.
  3. Applicare core, memoria e le impostazioni di cloud-init (indirizzo, gateway, server DNS, utente, chiavi SSH) in un’unica chiamata di configurazione.
  4. Attivare il firewall e avviare la macchina.
Dopo l’avvio la macchina risulta in installazione anziché in funzione, e passa a «in funzione» soltanto quando cloud-init ha terminato il proprio lavoro dentro al sistema guest. Per questo una macchina appena creata non diventa subito verde.

Contenitori Linux

Un collegamento Proxmox regge macchine virtuali e contenitori. Il piano decide quale dei due produce un ordine, e da lì in poi il genere viaggia con ogni comando anziché essere indovinato. Un contenitore non è una macchina virtuale più piccola: condivide il kernel del suo host, ed è per questo che costa poco ed è per questo che una manciata di cose lì semplicemente non ci sono.

  • Il piano dice macchina virtuale, contenitore, oppure l’uno o l’altro. Con l’uno o l’altro la scelta si fa durante l’ordine, e l’elenco delle immagini segue quella scelta anziché riempirne una in silenzio.
  • Un contenitore non viene clonato ma spacchettato, da un modello di contenitore presente sul collegamento. È un genere di sorgente diverso dai modelli da cui si clona una macchina virtuale, e un’immagine che ha soltanto un modello di contenitore non compare nell’elenco delle macchine virtuali.
  • Unprivileged è l’impostazione predefinita. La radice dentro il contenitore non è la radice sull’host, ed è ciò che si vuole a meno che qualcosa non chieda espressamente il contrario.
  • L’archiviazione è un volume di radice più i punti di montaggio. Il pannello li mostra come chiave, sorgente e percorso dentro l’ospite; il percorso dell’host di proposito non compare, perché dice più dell’host che della macchina.

Ogni comando porta il genere con sé, e un comando che non si adatta viene rifiutato prima di diventare un incarico, con il motivo sullo schermo. Due di quei motivi significano cose davvero diverse.

  • Mai: avviare dalla rete, una macchina vuota, e il firmware o l’ordine di avvio. Un contenitore non parte da una scheda di rete e non ha firmware a cui chiedere.
  • Non ancora: dischi, schede di rete e la schermata dell’hardware. Un contenitore ha eccome archiviazione e rete, in un’altra forma, e riusare per esse i campi di una macchina virtuale darebbe alle stesse parole un secondo significato.
  • Disponibile: creare, avviare, fermare, spegnere, stato, eliminare, sospendere, riprendere, reinstallare, il firewall e la sua protezione dagli indirizzi falsificati.
  • La console è un caso a parte, ed è un non ancora con una ragione: la console di una macchina virtuale è uno schermo, e un contenitore non ce l’ha. Quello che ha è un terminale, e sono un altro protocollo e un altro client.

Le copie di sicurezza hanno una differenza facile da sbagliare, e funziona esattamente al contrario che su una macchina virtuale. Un punto di montaggio è nella copia solo se è stato spuntato per questo; un disco di macchina virtuale ci sta finché non è stato tolto. Un contenitore con un volume di dati che nessuno ha spuntato ha quindi una copia che sembra completa e contiene solo il volume di radice.

Il pannello dice per ogni punto di montaggio se è nella copia, e non chiama mai completa una copertura non misurata. I bind mount e i dispositivi passati direttamente non vengono comunque mai inclusi: ciò che ci sta dietro appartiene all’host e non alla macchina.

Reinstallare un contenitore è una sostituzione e non un clone sopra. Il pannello mostra prima che cosa succede a ogni punto di montaggio, e solo dopo sostituisce la macchina sotto un unico blocco: il volume di radice viene ricostruito, e ciò che risultava conservato viene rimesso. Ciò che non era in quell’elenco non viene ripristinato.

Cloud-init

Provibr scrive un insieme di chiavi cloud-init fisso e ridotto, e nient’altro: le quattro configurazioni di rete, i server DNS e il dominio di ricerca, l’utente, il tipo di configurazione, le chiavi SSH, la password e se eseguire un aggiornamento dei pacchetti al primo avvio. L’elenco esiste su entrambi i lati, così un campo che per caso si chiama cloud-init non può mai riscrivere un’impostazione arbitraria della macchina.

La password di root non compare mai nel registro di audit. Viene annotato soltanto il nome del campo; il valore viaggia separatamente e non viene conservato.

L’opzione di aggiornamento dei pacchetti al primo avvio richiede Proxmox 8.1 o versioni successive. Su un nodo più vecchio la chiamata viene ripetuta senza quell’opzione, anziché non riuscire.

Che cosa si può fare in seguito

Avviare, arrestare, spegnere, mettere in pausa, riprendere, aggiornare lo stato, reinstallare ed eliminare. Lo spegnimento chiede prima con garbo al sistema guest e, scaduto un timeout, ripiega su un arresto forzato.

Dischi e schede di rete si possono aggiungere, ridimensionare, collegare e scollegare. Un disco può soltanto crescere. Il disco di avvio e il disco cloud-init non si possono scollegare, e nemmeno la prima scheda di rete.

Il firewall ha un elenco di regole modificabile e un log, entrambi letti dal nodo stesso e scritti su di esso.

Da sapere

  • Un clone eredita il bridge di rete del proprio template. Il bridge indicato sul piano e sull’integrazione viene memorizzato e utilizzato altrove, ma non viene applicato a un clone.
  • L’utilizzo del disco all’interno di una macchina virtuale non è visibile a Proxmox, quindi quel grafico mostra la dimensione assegnata e nessuna linea di utilizzo. Le altre misurazioni sono reali.
  • I template sono esclusi dal polling e non incidono mai sulla sua licenza.
  • Le macchine che esistono sul suo cluster ma non in Provibr vengono ignorate a ogni polling. Non possono nemmeno essere importate da Proxmox: oggi per gli hypervisor non esiste l’importazione.