Creazione di una Shared Image Gallery in Microsoft Azure

Da pochi giorni è stata rilasciato un servizio in Microsoft Azure, chiamato Shared Image Gallery, che permette di poter condividere a livello globale le immagini personalizzate delle macchine virtuali (managed images). Finora infatti se volevate utilizzare un’immagine personalizzata per creare macchine virtuali in differenti regioni di Azure era necessario copiare manualmente le immagini e renderle disponibili nella zona dove vi sarebbero servite. In più era difficile gestirne la versione.

Grazie alle Shared Image Gallery è invece possibile:

  • Replicare a livello globale le immagini personalizzate
  • Raggruppare le immagini e crearne diverse versioni, per una gestione semplificata
  • Utilizzare storage account di tipo Zone Redundant Storage (ZRS) per rendere le immagini altamente disponibili
  • Condividere le immagini tra sottoscrizioni diverse o tra tenant di Azure AD diversi grazie al Role Based Access Control (RBAC)

Usando una raccolta di immagini condivise (Shared Image Gallery) è possibile condividere le immagini con utenti diversi, entità servizio o gruppi di Active Directory all’interno dell’organizzazione e anche all’esterno. Le immagini condivise possono essere replicate in più aree, per un ridimensionamento più rapido delle distribuzioni.

Un’immagine gestita (managed image) è una copia di una macchina virtuale completa (inclusi eventuali dischi dati allegati) o solo del disco del sistema operativo, a seconda del modo in cui si crea l’immagine. Può essere utilizzata ripetutamente per creare nuove macchine virtuali.

Figura 1: Funzionamento della Shared Image Gallery

Prerequisiti

Per poter creare una Shared Image Gallery sarà necessario prima aver creato una immagine gestita (managed image). Nell’articolo Creare VM in Azure utilizzando VHD personalizzati ho già mostrato la procedura per utilizzare un proprio disco VHD, da caricare in Azure, per poter poi creare una managed image.

In alternativa si può Creare un’immagine gestita di una macchina virtuale generalizzata in Azure. Se l’immagine gestita contiene un disco dati, le dimensioni del disco dati non possono essere maggiori di 1 TiB.

Io ho creato una VM nel portale di Azure e l’ho personalizzata installando le mia applicazioni. Dopo aver lanciato il tool Sysprep e aver generalizzato la VM, è possibile catturarla e trasformarla in una immagine gestita da cui poi successivamente creare altre VM.

Figura 2: Cattura di una VM creata nel portale di Azure

Figura 3: Creazione di una immagine gestita utilizzando una VM preparata in Azure

Figura 4: Creazione dell’immagine gestita completata

Creazione della Shared Image Gallery

Abbiamo già detto prima che la raccolta di immagini condivise (Shared Image Gallery) semplifica la condivisione di immagini personalizzate all’interno dell’organizzazione e offre un completo controllo degli accessi in base al ruolo (RBAC). Le immagini possono avere più versioni ed è possibile scegliere di eseguire la replica di ogni versione dell’immagine in diverse aree di Azure (region). La raccolta funziona solo con le immagini gestite.

Durante la creazione della Shared Image Gallery verranno gestite le seguenti risorse:

  • Immagine gestita – un’immagine di base che può essere usata per creare le nuove VM
  • Raccolta di immagini – un repository per la gestione e la condivisione delle immagini
  • Definizione delle immagini – le immagini vengono definite all’interno di una raccolta e forniscono informazioni sull’immagine e sui requisiti per il suo uso interno
  • Versione dell’immagine – è possibile avere più versioni di un’immagine in base alle necessità del proprio ambiente.

Dal portale di Azure create una nuova risorsa di tipo Shared Image Gallery

Figura 5: Creazione della nuova risorsa Shared Image Gallery

Scegliete la sottoscrizione, il resource group e il nome che volete dare alla Shared Image Gallery. Indicate la region (io ho lasciato la stessa region dove si trova l’immagine gestita che ho cresto precedentemente) e inserite una descrizione per la gallery.

Figura 6: Inserimento delle informazioni della raccolta di immagini

Figura 7: Verifica dell’inserimento delle informazioni corrette per la creazione della Shared Image Gallery

Dopo aver completato la raccolta sarà necessario creare una definizione dell’immagine. Le definizioni di immagine sono un raggruppamento logico per le versioni di un’immagine e contengono informazioni sui motivi per cui è stata creata l’immagine, quale sistema operativo utilizza e informazioni sull’uso che si può fare dell’immagine.

Vi rimando alla lettura dell’articolo https://docs.microsoft.com/it-it/azure/virtual-machines/windows/shared-image-galleries#image-definitions per sapere quali valori sono accettati e quali parametri possono essere inseriti.

Figura 8: Creazione di una nuova Image Definition all’interno della Shared Image Gallery

Figura 9: Informazioni richieste per la Image Definition

Nella schermata successiva è possibile indicare valori come la versione dell’immagine, la location, l’immagine di riferimento (source image) da utilizzare, il numero di repliche delle immagini che si desidera vengano conservate da Azure. Ogni versione di immagini condivise può essere replicata in diverse aree a seconda delle esigenze della propria organizzazione. Nel mio caso ho deciso di replicare l’immagine in altre 3 aree, dove potrà essere poi essere riutilizzata.

Figura 10: Creazione della versione dell’immagine e replica in diverse aree di Azure

Figura 11: Validazione e creazione della Image Definition

 Il tempo necessario per la replica in aree diverse dipende dalla quantità di dati da copiare e dal numero di aree in cui viene replicata la versione. In alcuni casi, questa operazione può richiedere alcune ore. Nel mio caso ci sono voluti circa 25 minuti.

Figura 12: Replica delle immagini in diverse regioni di Azure

Figura 13: Risorse create in Azure. Si notino la shared image gallery, la image definition e la image version

Condivisione della Shared Image Gallery

Poiché la raccolta di immagini condivise, la definizione dell’immagine e la versione dell’immagine sono tutte risorse di Azure, possono essere condivise utilizzando RBAC (Role Based Access Control). È possibile condividere queste risorse con altri utenti del proprio tenant, le entità servizio e i gruppi. È anche possibile condividere l’accesso alla gallery a persone all’esterno del tenant.

Figura 14: Condivisione dell’accesso alla Shared Images Gallery

NOTA: Una volta che un utente ha accesso alla versione dell’ immagine condivisa o accesso alla gallery potrà distribuire una macchina virtuale oppure un set di scalabilità di macchine virtuali indipendentemente dalla sottoscrizione o dal tenant di Azure AD in cui si trova.

Creazione di una nuova VM partendo dall’immagine della Shared Image Gallery

Per creare una nuova macchina virtuale partendo dall’immagine
della Shared Image Gallery vi basterà selezionare l’immagine scelta e cliccare sul pulsante Create VM. Inserite le informazioni richieste e create al VM in una delle arre di Azure dove l’immagine è replicata. Se scegliete un’area diversa da quelle dove l’immagine è replicata riceverete un messaggio di errore.

Figura 15: Creazione di una nuova VM partendo da un’immagine presente nella Shred Images Gallery

Figura 16: Informazioni necessarie alla creazione della VM, con scelta dell’area di Azure corretta

Figura 17: Se viene scelta un’area di Azure dove l’immagine non è stata replicata si riceverà un messaggio di errore

Potete aggiornare la replica dell’immagine aggiungendo l’area di Azure dove volete effettuare la nuova distribuzione.

Dalla Shared Image Gallery scegliete l’immagine, andate in Image Versions, scegliete quale versione dell’immagine utilizzare e da Update Replication aggiungete l’area di Azure mancante, come mostrato in figura:

Figura 18: Aggiunta di una nuova area di Azure in cui replicare l’immagine

Conclusioni

La Shared Image Gallery permette di poter condividere le immagini gestite (e personalizzate) in diverse aree di Azure, come se fossero immagini del Marketplace. In questo modo possiamo rendere più semplice la condivisione delle immagini soprattutto in organizzazioni che hanno necessità di creare macchine virtuali in diverse aree di Azure e di tenere traccia delle versioni. Non sono previsti addebiti aggiuntivi per l’uso del servizio, ma vengono addebitati i costi di archiviazione per le versioni di immagini condivise (il costo dipende dal numero di repliche della versione dell’immagine e il numero di aree in che della versione viene replicate) e l’utilizzo della banda in uscita per la replica della prima versione di immagine dall’area di origine verso le aree replicate. Le repliche successive vengono gestite all’interno dell’area, in modo che non siano previsti addebiti aggiuntivi.