VMware è stato a lungo pioniere e punto di riferimento della virtualizzazione, sia nel settore delle workstation con VMware Workstation che negli ambienti server con VMware ESXi Server. Dopo l’acquisizione da parte di Broadcom, le nuove politiche introdotte, quali la cessazione delle licenze perpetue e l’aumento dei costi tramite abbonamenti basati sul numero di core della CPU, le organizzazioni stanno rivalutando le proprie infrastrutture e le soluzioni che le compongono. In questa ricerca di soluzioni alternative, OpenStack si presenta come una scelta strategica e molto competitiva per imprese di qualsiasi dimensione.

Rispetto a VMware ESXi Server, OpenStack offre numerosi vantaggi:

  • Maggiore flessibilità software e hardware
  • Notevole riduzione dei costi (in particolare a livello di licenze software)
  • Nessun vendor lock-in (soluzione open-source con standard tecnici aperti)
  • Interoperabilità garantita

Entriamo ora nel vivo della questione, ovvero come migrare verso infrastrutture OpenStack una (o più) macchine virtuali che utilizzano la tecnologia VMware ESXI Server.

1. Requisiti tecnici

  • Un’istanza sull’infrastruttura OpenStack di destinazione con un sistema operativo Rocky Linux o equivalente che nel presente articolo verrà chiamata «appliance di migrazione». Durante le migrazioni, questa istanza verrà utilizzata come «passavivande» e dovrà avere accesso diretto al(i) volume(i) di destinazione delle macchine virtuali che migreremo. Personalmente, userò il Public Cloud di Infomaniak che è estremamente competitivo rispetto ad AWS, GCP o Azure.
  • Un accesso SSH (solo porta 22) ai server ESXi dall’appliance di migrazione (tramite login e password o tramite chiave SSH).
  • Tutte le azioni descritte in questo articolo sono da effettuarsi con l’utente root

💡 Ancora due precisazioni importanti prima di passare alla pratica:

  • Questa procedura è valida soltanto per VMware ESXi e non per vSphere. Esplorando la documentazione delle soluzioni utilizzate in questo articolo, se necessario, potrai adattarla in modo facile.
  • Esegui il backup delle tue macchine virtuali prima del processo di migrazione, mi dispiacerebbe essere responsabile delle tue prossime notti bianche se qualcosa dovesse andare storto!

Tutto qui! Adesso, passiamo alla configurazione della nostra appliance di migrazione 🚀

2. Installazione dell’appliance di migrazione

Affinché la nostra appliance di migrazione sia funzionale, una volta connessi in SSH ad essa, dobbiamo installare alcuni pacchetti:

dnf install centos-release-openstack-caracal
dnf install python-openstackclient virt-v2v

3. Autenticazione e connessione

Prima di poter lanciare la nostra prima migrazione, dobbiamo fare due cose affinché la nostra appliance di migrazione possa connettersi al nostro server ESXi e alla nostra piattaforma OpenStack:

  • Per l’autenticazione al server ESXi, sono possibili due soluzioni: o con coppia di chiavi o con nome utente e password.
  • Per l’autenticazione con la piattaforma OpenStack, sarà necessario recuperare il file di profilo openrc e inviarlo alla nostra appliance di migrazione.

3.1 Autenticazione con il server ESXi

Parto dal presupposto che le regole del firewall tra la tua istanza OpenStack e il tuo server ESXi siano impostate e funzionanti, così come l’attivazione del servizio SSH sul server ESXi.

Coloro che non desiderano impostare un’autenticazione tramite coppia di chiavi, li invito a passare direttamente alla sezione successiva sull’autenticazione con la piattaforma OpenStack.

Adesso imposteremo la nostra autenticazione tramite coppie di chiavi. Niente di complicato, passeremo alla nostra appliance di migrazione ed eseguiremo i seguenti comandi:

  • Iniziamo generando la nostra coppia di chiavi (la coppia di chiavi utilizza RSA per massimizzare la compatibilità con le versioni precedenti di ESXi):ssh-keygen -t rsa -b 4096
  • Una volta generata la tua coppia di chiavi, la implementeremo nel nostro server ESXi :ssh-copy-id root@IP_SERVEUR_ESXIQuesto comando ti chiederà di inserire la password root del tuo server di virtualizzazione e vi copierà la tua chiave pubblica. D’ora in poi, non dovrai più inserire la password per connetterti al tuo server.

Ti lascio verificare che tutto abbia funzionato correttamente provando a connetterti al tuo server ESXi direttamente dall’appliance di migrazione.

Per coloro che desiderano utilizzare l’autenticazione tramite nome utente e password, sarà sufficiente creare un file di testo contenente la password del server ESXi nella propria appliance di migrazione:

touch passwordfile
echo 'MOT_DE_PASSE_ESXI' > passwordfile

Naturalmente, ti farò verificare che i dati di connessione siano corretti collegandoti al tuo server ESXi.

3.2 Autenticazione con la piattaforma OpenStack

Non ci resta che autenticare la nostra appliance sulla piattaforma OpenStack. A tal fine, è necessario inviare alla tua istanza il file del profilo openrc che recupereremo dalla dashboard di Horizon prima di eseguirlo.

Per confermare di esserti autenticato in modo corretto sulla piattaforma OpenStack, puoi lanciare il seguente comando:

OpenStack token issue
Dovresti ottenere questa visualizzazione. Se è così, va tutto bene, congratulazioni 🙌

4. Avvio delle migrazioni delle macchine virtuali

Per effettuare le migrazioni delle nostre macchine virtuali, utilizzeremo l’utility virt-v2v sviluppata da RedHat, appositamente prevista per questo tipo di casi e che integra già tutte le funzioni e le opzioni necessarie. Senza entrare nei dettagli, virt-v2v creerà un nuovo volume nel progetto OpenStack dove si trova la tua appliance di migrazione per copiarvi integralmente la tua macchina virtuale ESXi. Dopo aver copiato i dati, virt-v2v preparerà il volume in modo che possa essere avviato in un OpenStack.

Un ultimo punto importante prima di iniziare (prometto, è l’ultimo 🙈): le macchine virtuali da migrare devono essere spente. Ricordati anche di verificare le tue quote di volume sulla piattaforma OpenStack per non essere bloccato durante la migrazione.

Ecco, adesso possiamo andare 😎

Ecco il comando che ci consentirà di migrare le nostre macchine virtuali. Assicurati di adattarlo in base ai tuoi dati!

Con autenticazione tramite coppia di chiavi

virt-v2v -i vmx -it ssh ssh://root@IP_SERVEUR_ESXI/vmfs/volumes/NOM_DATASTORE/NOM_DE_VM/NOM_DE_VM.vmx -o openstack -oo server-id=ID_INSTANCE_OPENSTACK

Con autenticazione tramite nome utente e password

virt-v2v -i vmx -it ssh -ip FICHIER_MOT_DE_PASSE ssh://root@IP_SERVEUR_ESXI/vmfs/volumes/NOM_DATASTORE/NOM_DE_VM/NOM_DE_VM.vmx -o openstack -oo server-id=ID_INSTANCE_OPENSTACK

5. Avvio delle macchine virtuali migrate

Una volta conclusa la migrazione, non resta altro che riavviare la nostra istanza tramite la funzione boot from volume di OpenStack. Questa funzione consente di utilizzare direttamente un volume bootable per un’istanza anziché utilizzare un’immagine che viene inserita in un nuovo volume.

Per iniziare, recupereremo l’ID del volume che è stato creato per la nostra migrazione. Iniziamo quindi elencando i volumi del nostro progetto OpenStack:

openstack volume list

Nell’elenco dei volumi restituiti, dovresti vederne uno con il nome della tua macchina virtuale seguito da -sda (ou sdb, sdc… se la tua VM ha più dischi). È questo volume che contiene ciò che ci interessa.

Copia il suo identificativo (colonna ID nel ritorno del comando precedente) e inserisci quindi il seguente comando:

openstack server create --flavor a2-ram4-disk0 –volume  --network ext-net1

Ecco, la tua istanza si sta avviando 😊 Puoi verificare che tutto funzioni correttamente tramite la console VNC inserendo l’URL restituito dal seguente comando nel tuo browser:

openstack console url show

Puoi anche connetterti ad essa con il protocollo abituale (SSH, RDP…) facendo attenzione ad aver aperto correttamente le porte necessarie nel tuo gruppo di sicurezza.

6. Specificità con il Public Cloud di Infomaniak

Infomaniak Public Cloud ha una piccola particolarità per far sì che il volume che abbiamo appena creato funzioni. Al momento della creazione del nostro volume, virt-v2v vi aggiunge automaticamente dei metadati. Questi ultimi consentono di specificare come configurare la macchina virtuale che utilizzerà il nostro volume nell’hypervisor, ma alcune non sono supportate in tutte le regioni della piattaforma (regione dc3-a).

Per correggere ciò, è sufficiente eliminare la proprietà che non è attualmente compatibile con la piattaforma. La proprietà in questione è hw_machine_type=q35. Rimuoveremo quindi la proprietà del nostro volume con il seguente comando:

openstack volume unset --image-property hw_machine_type

Una volta completata questa operazione, puoi avviare la tua istanza come descritto in precedenza con la funzione boot from volume della piattaforma.

Maggiori informazioni


Kevin Allioli è Architetto Cloud & System presso Infomaniak ed Esperto OpenStack e AWS. Con la sua esperienza di oltre 10 anni nel cloud computing, contribuisce allo sviluppo del Public Cloud di Infomaniak.