Di recente mi è capitato di dover implementare un laboratorio di VMware 8 utilizzando un cluster a due nodi con Proxmox 8.
Effettuando diversi test abbiamo notato che le prestazioni del VCenter installato su un ESXi virtualizzato erano scarse e perciò abbiamo deciso di effettuare l’installazione direttamente su Proxmox.
Non è possible installare il VCenter montando una ISO su Proxmox, come si farebbe normalemente per installare una VM, ma è necessario eseguire un software su un client Windows o Linux per effettuare il deploy su un ESXi.
Sfruttando la funzionalità per l’importazione delle VM dagli ESXi ed effettuando alcune modifiche all’hardware virtuale, siamo riusciti a creare un template del VCenter.
Infine, per automatizzare la clonazione del VCenter, abbiamo utilizzato le API della management per configurare l’FQDN della macchina, con relativa modifica ai file di configurazione ed ai certificati SSL.
PREREQUISITI
Per procedere all’importazione del VCenter su Proxmox, è necessario aver effettuato il deploy del VCenter su un ESXi (fisico o virtuale).
Proxmox interagisce con l’ESXi tramite API, perciò è necessario che esso possa contattarlo in HTTPS (sulla 443/TCP).
Solamente dalla versione 8 di Proxmox Virtual Environment è possibile aggiungere un’ESXi come datastore.
Si consiglia la visione di questo articolo che approfondisce l’importazione delle VM da ESXi su Proxmox:
Importazione e Configurazione di una Virtual Machine Windows da VmWare ESXi a Proxmox VE
AGGIUNGERE L’ESXI COME DATASTORE DI PROXMOX
Effettuare il login come amministatore nella web UI e selezionare il cluster, successivamente cliccare su Storage per accedere alla sezione relativa ai datastore:
Cliccare su Add e selezionare ESXi:
Compilare le informazioni riguardo all’ESXi e spuntare Skip Certificate Validation per ignorare gli errori relativi al certificato SSL:
Nella casella Server è possibile inserire l’IP o l’FQDN dell’ESXi.
Dopo aver cliccato su Add, l’ESXi verrà mostrato tra i datastore dei nodi di Proxmox.
IMPORTARE IL VCENTER DA UN ESXI A PROXMOX
ATTENZIONE:
Prima di proseguire con l’importazione del VCenter è fortemente consigliato spegnere la VM sull’ESXi.
Selezionare l’ESXi tra i datastore disponibili, cliccare su Virtual Guests, selezionare la VM del VCenter e cliccare su Import:
Selezionare come CPU host per ottenere il massimo delle performance e se necessario modificare la quantità di cores e di RAM da assegnare alla VM.
È possibile selezione il bridge su cui collegare la scheda di rete, nel caso in cui la VM ne abbia solamente una, altrimenti è possibile assegnare successivamente un bridge diverso per ogni scheda nel tab Advanced.
Definire su quale datastore si vuole salvare i dischi della nuova VM ed opzionalmente assegnare un ID ed un nome diverso da quelli utilizzati di default.
Accedere al tab Advanced per configurare la tipologia di scheda di rete e la tipologia di SCSI controller.
È consigliato utilizzare il VirIO SCSI controller poiché gestisce correttamente tutti i 17 dischi del VCenter.
Come scheda di rete viene consigliata la VirtIO poiché è quella meglio supportata da Proxmox.
Se è necessario assegnare un bridge diverso per ogni scheda di rete ed opzionalmente, spuntando l’opzione Unique MAC addresses, rigenerare l’indirizzo fisico delle schede.
Infine, per far partire l’imporazione cliccare su Import.
È possibile chiudere la finestra che viene aperta per eseguire il task in background.
CONFIGURAZIONE DEL VCENTER
ATTENZIONE:
Il cambio dell’FQDN del VCenter necessita che prima vengano rimossi qualsiasi cluster o datacenter che esso gestisce ed implica di effettuare nuovamente il join su Active Directory.
Si sconsiglia fortemente di utilizzare un VCenter clonato in produzione.
Dopo che la VM del VCenter è stata importata correttamente, è possibile avviarla ed in base alla configurazione della rete effettuata durante l’installazione dovrebbe ricevere un IP dal DHCP oppure utilizzare quello statico.
Verificare che dopo qualche minuto i servizi siano stati avviati correttamente e navigare sulla web UI per controllare che sia possibile loggarsi con le credenziali configurate durante l’installazione.
Dopo aver verificato il funzionamento del VCenter, è possibile spegnere la VM e convertirla in template.
Quando il VCenter verrà clonato, la nuova VM avrà lo stesso FQDN del template, perciò potrebbe essere necessario doverlo modificare.
La modifica dell’FQDN del VCenter comporta la modifica di diversi file di configurazione e la rigenerazione dei certificati SSL.
Se si effettua questa modifica dalla management del VCenter tutto il procedimento viene automatizzato, invece se lo si effettua tramite SSH o da console e non vengono effettuati tutti gli step correttamente, il SSO smette di funzionare rendendo inutilizzabile il VCenter.
Nel nostro caso avevamo bisogno di automatizzare la configurazione per poter effettuare deploy massivi, perciò abbiamo sviluppato uno script che tramite le API della management effettua l’operazione.
Versione dello script con la configurazione del DNS e dell’IP di management tramite DHCP:
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 |
#!/bin/bash # Login settings USER='root' PASSWORD='PASSWORD-MANAGEMENT-HERE' SSO_PASSWORD='PASSWORD-SSO-HERE' # Network settings IP='IP-VCENTER-HERE' FQDN='FQDN-VCENTER-HERE' # Encode the authentication token basic_token=$(echo -n "$USER:$PASSWORD" | base64) # Login session_id=$(curl -s -X POST \ -k "https://$IP:5480/rest/com/vmware/cis/session" \ -H "Host: $IP" \ -H "Authorization: Basic $basic_token" \ -H "Content-Length: 0" \ | jq -r .value) # Json of the network settings read -r -d '' json_settings << EOM { "spec": { "hostname": "$FQDN", "SSO_user": "$SSO_USER", "SSO_password": "$SSO_PASSWORD", "dns": { "mode": "dhcp", "servers": [] }, "ipv4": { "mode": "DHCP" }, "ipv6": { "addresses": [], "autoconf": false, "default_gateway": "", "dhcp": false } } } EOM # Change the network settings http_code=$(curl -s -X POST \ -k "https://$IP:5480/rest/appliance/networking?action=change&vmw-task=true" \ -o /dev/null \ -w "%{http_code}" \ -H "Host: $IP" \ -H "Appliance-Ui-Sessionid: $session_id" \ -H "Content-Type: application/json" \ --data "$json_settings") # Check the HTTP response code if [ "$http_code" -eq "200" ]; then echo "Success!" else echo "Failed!" fi |
Versione dello script con la configurazione del DNS e dell’IP di management statici:
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 |
#!/bin/bash # Login settings USER='root' PASSWORD='PASSWORD-MANAGEMENT-HERE' SSO_PASSWORD='PASSWORD-SSO-HERE' # Network settings OLD_IP='IP-TEMPLATE-HERE' NEW_IP='NEW-IP-VCENTER-HERE' FQDN='FQDN-VCENTER-HERE' GW='GATEWAY-HERE' NET_PREFIX='NET-PREFIX-HERE' DNS='DNS-SERVER-IP-HERE' # Encode the authentication token basic_token=$(echo -n "$USER:$PASSWORD" | base64) # Login session_id=$(curl -s -X POST \ -k "https://$OLD_IP:5480/rest/com/vmware/cis/session" \ -H "Host: $OLD_IP" \ -H "Authorization: Basic $basic_token" \ -H "Content-Length: 0" \ | jq -r .value) # Json of the network settings read -r -d '' json_settings << EOM { "spec": { "hostname": "$FQDN", "SSO_user": "$SSO_USER", "SSO_password": "$SSO_PASSWORD", "dns": { "mode": "is_static", "servers": [ "$DNS" ] }, "ipv4": { "mode": "STATIC", "address": "$NEW_IP", "default_gateway": "$GW", "prefix": "$NET_PREFIX" }, "ipv6": { "addresses": [], "autoconf": false, "default_gateway": "", "dhcp": false } } } EOM # Change the network settings http_code=$(curl -s -X POST \ -k "https://$OLD_IP:5480/rest/appliance/networking?action=change&vmw-task=true" \ -o /dev/null \ -w "%{http_code}" \ -H "Host: $OLD_IP" \ -H "Appliance-Ui-Sessionid: $session_id" \ -H "Content-Type: application/json" \ --data "$json_settings") # Check the HTTP response code if [ "$http_code" -eq "200" ]; then echo "Success!" else echo "Failed!" fi |
È possibile eseguire lo script da un qualsiasi host in grado di contattare il VCenter sulla porta 5480/TCP (la porta della web UI di management).
In seguito all’esecuzione dello script è necessario attendere qualche minuto prima che il VCenter sia pronto.
Tramite la web UI della management è possibile verificare lo stato di completamento della configurazione.
Quando il VCenter torna online, verificare che la CN del certificato SSL corrisponda all’FQDN e che sia possibile effettuare il login con le credenziali SSO.
RIGENERAZIONE DELLE CHIAVI SSH
Le chiavi dell’host (host keys) vengono utilizzate dal VCenter per autenticarsi con il client SSH.
Se non vengono rigenerate, tutti i cloni utilizzeranno le chiavi del template e perciò potrebbe venir mostrato un errore simile al seguente quando si effettua una connessione in SSH:
The authenticity of host ‘192.168.1.100 (192.168.1.100)’ can’t be established.
ED25519 key fingerprint is SHA256:xP7W8Ze8DyiIFuPZFc4KcoBzIzM70sz7+4WfOPCoAJA.
This host key is known by the following other names/addresses:
C:\Users\marco.valle/.ssh/known_hosts:349: 192.168.1.100
C:\Users\marco.valle/.ssh/known_hosts:352: 192.168.1.101
Per evitare questa probblematica è possibile eseguire i seguenti comandi dalla console o da una sessione SSH:
0 1 2 |
rm -v /etc/ssh/ssh_host_* ssh-keygen -A service sshd restart |
WORKAROUND PER LA CONFIGURAZIONE DEL HA
È possibile che dopo aver configurato un cluster HA ed il DRS tramite un VCenter su Proxmox venga mostato il seguente errore:
L’errore precedente mostrato sul VCenter corrisponde al seguente errore riportato dall’ESXi quando si cerca di accendere la VM VCLs:
Questo errore è dato da una funzionalità della CPU che viene auomaticamente abilitata per le VM VCLs nonostate possa non essere supportata dalla CPU host di Proxmox.
Per permettere l’avvio delle VM VCLs, nel caso in cui si verificasse l’errore precedente, è necessario disabilitare la funzionalità VMware EVC.
Per prima cosa è necessario effettuare l’upgrade della compatibilità delle VM VCLs alla versione 8 tramite la Web UI dell’ESXi:
In seguito è necessario accedere al VCenter, selezionare l’ESXi e navigare nel menù VM:
Cliccare sulla VM, navigare nel menù Configure, selezionare VMware EVC e cliccare su Configure:
Se la funzionalità risulta disabilitata seguire i seguenti step per abilitarla:
Selezionare Enable EVC for Intel hosts nel caso in cui si usino CPU Intel oppure Enable EVC for AMD hosts nel caso in cui si usino CPU AMD.
È possibile utilizzare la generazione della CPU (CPU Mode) di default.
Dal momento che la funzionalità risulta attiva, proseguire in modo analogo agli step precedenti per disabilitarla:
Infine, accendere la VM VCLs dalla Web UI dell’ESXi e verificare che dopo qualche minuto risulti con stato Normal:
0 Comments