Migrazione macchine virtuali Azure tra Tenant di Microsoft Entra

Migrare o clonare una virtual machine da un Tenant di Microsoft Entra a un altro può essere necessario in diversi scenari come, ad esempio, il consolidamento di più Tenant, il trasferimento delle risorse, l’acquisizione di un’azienda da parte di un’altra, ecc.

Approfitto dell’occasione per chiarire la differenza tra un Tenant di Microsoft Entra (precedentemente Azure Active Directory) e una Sottoscrizione di Azure:

Tenant di Microsoft Entra

  • Definizione: È un’istanza dedicata di Microsoft Entra ID (ex Azure Active Directory) associata a un’organizzazione.
  • Funzione principale: Gestisce identità e accessi per utenti, gruppi, applicazioni e dispositivi.
  • Ruolo: Centralizza l’autenticazione e il controllo degli accessi.
  • Ambito: Tutte le risorse di Azure e le sottoscrizioni sono collegate a un unico Tenant.
  • Esempio: azienda.onmicrosoft.com è il dominio di un Tenant.

Sottoscrizione di Azure

  • Definizione: È un contratto per utilizzare i servizi cloud di Azure, associato a un Tenant.
  • Funzione principale: Gestisce risorse (macchine virtuali, database, reti, ecc.) e il modello di pagamento per l’uso di Azure.
  • Ruolo: Definisce il budget, i limiti e i permessi per le risorse create.
  • Ambito: Una sottoscrizione è legata a un singolo Tenant, ma un Tenant può avere più sottoscrizioni.
  • Esempio: “Sottoscrizione Pay-As-You-Go” per utilizzare servizi come VM o Storage.

Step necessari alla migrazione tra tenant diversi di Microsoft Entra

Partiamo innanzitutto definendo gli step necessari per eseguire questa attività:

  • Creazione Snapshot della macchina di origine
  • Trasferimento dell’immagine creata nel Tenant di destinazione e in una nuova Sottoscrizione
  • Creazione disco a partire dalla Snapshot
  • Creazione nuova macchina virtuale nel Tenant di destinazione

Creazione Snapshot

È consigliabile spegnere la VM prima di avviare il processo di creazione della Snapshot, successivamente potremo eseguire l’attività come segue.

Figura 1: Elenco Virtual Machines

Figura 2: Selezione Virtual Machine da migrare

Figura 3: Shutdown VM da migrare

Figura 4: Selezione disco OS

Figura 5: Creazione Snapshot

Figura 6: Inserimento dati Snapshot

Figura 7: Avvio processo creazione Snapshot

Figura 8: Processo creazione Snapshot completato

Terminato il processo di creazione della Snapshot del disco che contiene il sistema operativo dovremo scaricare il file VHD generato tramite l’export della nostra istantanea.
È importante sottolineare che il file dovrà avere estensione .vhd quindi potrebbe essere necessario rinominarlo dopo il download.

Figura 9: Export della Snapshot

Figura 10: Generazione link download VHD

Potremo ora scaricare la snapshot della macchina virtuale direttamente (Download the VHD file) oppure utilizzando l’URL generato.

Figura 11: URL download file VHD

Upload file VHD nel Tenant di destinazione

Il trasferimento del file può essere eseguito in diversi modi, ma sarà prima necessario creare uno Storage Account su cui eseguire il caricamento nella Sottoscrizione di destinazione.
In questa guida non vedremo in dettaglio le caratteristiche degli Storage Account e ne creeremo uno con parametri di default, ma potrete trovare informazioni utili nell’articolo di Nicola Ferrini Azure Storage Account overview – ICT Power.
Chiaramente il requisito essenziale è che sul nuovo Tenant sia disponibile una Subscription Azure, oltre a questo servirà un Resource Group prima di creare la risorsa storage (Azure Blob Storage).

Figura 12: Creazione Resource Group

Figura 13: Inserimento dettagli creazione Resource Group

Figura 14: Validazione e inizio processo creazione Resource Group

Figura 15: Adesso sarà possibile creare risorse

Figura 16: Creazione nuova risorsa Azure

Figura 17: Selezione risorsa da creare

Figura 18: Validazione processo creazione

Figura 19: Avvio processo creazione

Figura 20: Storage Account creato

Prima di procedere con l’upload del file creeremo un nuovo Container.

Figura 21: Sezione Storage account

Figura 22: Avvio processo creazione nuovo Container

Figura 23: Creazione nuovo Container

Come anticipato ci sono diversi metodi per caricare il file nel Container appena creato:

  • Web browser, nella pagina di gestione del Container del Portale Azure.
  • Azure Storage Explorer, un file manager che può essere utilizzato per trasferire dati.
  • AzCopy, utilizzabile via PowerShell (consigliato).

Iniziamo con il primo metodo, il più immediato ma anche il meno efficiente.

Figura 24: Upload all’interno del Container

NOTA: Azure Blob Storage supporta singoli blob fino a 4,75 TB.

I browser moderni hanno limiti intrinseci sulla dimensione dei file caricati. Anche se non impongono una restrizione esplicita sulla dimensione del file, possono sorgere problemi legati a:

  • Gestione della memoria: Se il file fosse troppo grande, il browser potrebbe esaurire la memoria disponibile.
  • Timeout di rete: Il caricamento di file di grandi dimensioni può essere interrotto se impiega troppo tempo.

Figura 25: Avvio processo Upload

Figura 26: Upload file

Passiamo al secondo metodo tramite Azure Storage Explorer. Azure Storage Explorer è uno strumento gratuito e multipiattaforma che consente di gestire e interagire con i servizi di archiviazione di Azure in modo semplice e intuitivo. Ha una serie di vantaggi significativi, come un’interfaccia user-friendly per gestire blob storage, file storage, code, tabelle e altre risorse di archiviazione di Azure.

In più, è disponibile su Windows, MacOS e Linux, garantendo flessibilità per team con ambienti eterogenei.

Figura 27: Accesso con account Azure

Figura 28: Selezione envinronment

Figura 29: Fase di Login

Figura 30: Open Explorer

Figura 31: Upload nel container

Figura 32: Selezione e upload del file

Figura 33: File caricato

Il comando AzCopy è molto semplice. Richiede come parametri il file sorgente e il contenitore di destinazione con una Shared Access Signature (SAS).

AzCopy è uno strumento di linea di comando gratuito e altamente efficiente per il trasferimento di dati da e verso i servizi di archiviazione di Azure. È progettato per gestire grandi volumi di dati con prestazioni elevate e semplicità d’uso.

Una volta scaricato è sufficiente eseguire il file azcopy.exe da PowerShell.
Una Shared Access Signature è un modo sicuro per concedere accesso limitato alle risorse di Azure senza condividere le chiavi dell’account. Consente un controllo granulare sui permessi, il periodo di validità e le condizioni di accesso. È particolarmente utile per condividere risorse in modo sicuro con applicazioni, utenti o servizi esterni.

Partiamo ora dal container creato in precedenza, sarà importante dare i privilegi corretti:

Figura 34: Generazione SAS

Figura 35: Impostazione privilegi

Figura 36: Finalizzazione processo creazione SAS

Una volta generato il Blob SAS URL potremo utilizzarlo per fare upload del file scaricato nel container chiamato snapshot, oppure sarà possibile trasferirlo direttamente, utilizzando l’URL generato durante la fase di export della snapshot e il SAS URL del Tenant di destinazione.
Il comando da utilizzare nel primo caso è il seguente:

Figura 37: Upload completato via azcopy partendo dal file locale

Il secondo caso è quello, chiaramente, consigliato perché riduce l’effort necessario alle operazioni di copia del file. Come anticipato, dovremo avere a disposizione l’indirizzo generato dall’export della snapshot di origine e il Blob SAS URL del container di destinazione. Il comando è il seguente:

Figura 38: Trasferimento del file dal Tenant sorgente

NOTA: Questa modalità evita che il file sia scaricato in locale e poi successivamente caricato e permette di trasferire il file direttamente tra di due storage account. Ottimo no? 🙂

Creazione Virtual Machine nel Tenant e nella Sottoscrizione di destinazione

Abbiamo visto le metodologie di upload di un file in un Blob Container possiamo, quindi, ora procedere con la parte finale di questa guida, ovvero la creazione della macchina virtuale nel Tenant di destinazione partendo dalla Snapshot del disco di un VM in quello di origine.
Il file viene esportato senza estensione, sarà prima necessario eseguirne un clone con il nome corretto poiché non è supportato il rename di oggetti Blob. Possiamo eseguire l’operazione con Azure Storage Explorer che abbiamo visto in precedenza:

Figura 39: Clone file con estensione VHD

Figura 40: Selezionare la gestione dischi

Figura 41: Procedere alla creazione di un disco

Figura 42: Selezionare il source type Storage Blob

Figura 43: Selezionare dimensione e tipo disco

Figura 44: Creazione disco

Partendo dal disco appena clonato procediamo al deploy di una nuova macchina virtuale come segue:

Figura 45: Inizio processo di creazione VM

Figura 46: Parametri di creazione VM

Figura 47: Selezione VM Size

Da questo punto in avanti il processo di creazione della macchina virtuale è standard e non verrà documentato in questo articolo, è possibile trovare ulteriori informazioni su Microsoft Learn.

Figura 48: Macchina virtuale clonata/migrata su nuovo Tenant

Conclusioni

Le motivazioni per spostare o copiare una macchina virtuale tra due Tenant di Microsoft Entra ID possono essere molteplici, sia per esigenze operative che per riorganizzazioni aziendali. In questa guida, abbiamo esplorato un approccio efficace per eseguire questa operazione: partendo dalla creazione di una snapshot del disco del sistema operativo, abbiamo copiato tale snapshot in uno Storage Account e generato un clone del disco nel Tenant di destinazione. Infine, utilizzando il disco clonato, abbiamo configurato una nuova macchina virtuale identica a quella di origine, completando con successo la migrazione.