Creare immagini personalizzate con Custom image templates in Azure Virtual Desktop

Da pochissimi giorni è stata rilasciata in anteprima una funzionalità di Azure Virtual Desktop chiamata Custom Image Templates che permette di velocizzare sensibilmente la creazione dei template e delle golden image da utilizzare per la distribuzione degli Host Pool.

L’uso di immagini personalizzate consente di standardizzare la configurazione delle macchine virtuali sesison host. I Custom Image Templates sono basati su Azure Image Builder, di cui ho già avuto modo di parlare nella guida Azure Image Builder: Creazione e gestione di immagini personalizzate delle macchine virtuali Azure | ICT Power e che sono stati ottimizzati per Azure Virtual Desktop.

Prerequisiti

Prima di poter utilizzare i Custom Image Templates è necessario disporre di alcuni prerequisiti:

  • I seguenti provider di risorse registrati nella sottoscrizione:
    • Microsoft.DesktopVirtualization
    • Microsoft.VirtualMachineImages
    • Microsoft.Storage
    • Microsoft.Compute
    • Microsoft.Network
    • Microsoft.KeyVault
  • Un gruppo di risorse (vuoto) per archiviare i Custom Image Templates e le immagini.
  • Un’Identità gestita assegnata dall’utente. È consigliabile crearne uno specificamente da usare con Custom Image Templates
  • Assegnazione ad un ruolo personalizzato dei diritti di operare sulle immagini, che dovrà essere assegnato all’identità gestita
  • Facoltativo: se si vuole distribuire l’immagine in Azure Compute Gallery, creare la gallery e quindi creare una definizione di immagine della macchina virtuale.

Creazione di una managed identity

Le Managed identity per le risorse Azure sono una funzionalità di Azure Active Directory che permette di effettuare l’autenticazione a qualsiasi servizio che supporta l’autenticazione di Azure AD senza dover gestire le credenziali.

Sono disponibili due tipi di identità gestite:

  • Assegnata dal sistema. Alcuni servizi di Azure consentono di abilitare un’identità gestita direttamente in un’istanza del servizio (service principal). Quando si abilita un’identità gestita assegnata dal sistema viene creata un’identità in Azure AD. L’identità viene associata al ciclo di vita di quell’istanza del servizio. Quando la risorsa viene eliminata, Azure elimina automaticamente anche l’identità. Per impostazione predefinita, solo questa specifica risorsa di Azure può usare questa identità per richiedere token ad Azure AD.
  • Assegnata dall’utente. È anche possibile creare un’identità gestita come risorsa di Azure autonoma. È possibile creare un’identità gestita assegnata dall’utente e assegnarla a una o più istanze di un servizio di Azure. Le identità gestite assegnate dall’utente vengono gestite separatamente rispetto alle risorse che le usano.

Noi creeremo un’identità gestita dall’utente. Dal portale di Azure cercate Managed Identities e create una nuova identità.

Figura 1: Creazione di una nuova Managed Identity

Completate i campi richiesti e date un nome alla Managed Identity.

Figura 2: Informazioni richieste per la creazione della Managed Identity

Figura 3: Managed Identity creata

Creazione di un ruolo personalizzato e assegnazione dei permessi alla Managed Identity

La gestione dell’accesso per le risorse cloud è una funzione essenziale per qualsiasi organizzazione che usa il cloud. Il controllo degli accessi in base al ruolo di Azure (Role Based Access Control o RBAC, che in inglese si pronuncia R-Back) consente di gestire gli utenti autorizzati ad accedere alle risorse di Azure, le operazioni che possono eseguire su tali risorse e le aree a cui hanno accesso.

Nonostante in Azure ci siano decine di ruoli predefiniti, capaci di soddisfare la maggior parte delle esigenze di gestione, è possibile anche creare altri 5.000 ruoli personalizzati. Analogamente ai ruoli predefiniti, è possibile assegnare ruoli personalizzati a utenti, gruppi ed entità servizio in ambito management group, sottoscrizione e gruppo di risorse. In più i ruoli personalizzati possono essere condivisi tra sottoscrizioni che considerano attendibile la stessa directory di Azure AD.

Dopo esservi collegati al portale di Azure, selezionate il gruppo di risorse di Azure in cui volete creare i Custom Image Templates e dal nodo IAM (Identity Access Management) cliccate su Create a custom role.

Figura 4: Creazione di un ruolo personalizzato nel gruppo di risorse che ospiterà i Custom Image Templates

Il ruolo dovrà avere i seguenti permessi:

Figura 5: Creazione di un nuovo ruolo personalzizato partendo da zero

Figura 6: Aggiunta dei permessi da assegnare al ruolo

Figura 7: Il ruolo sarà disponibile solo nel gruppo di risorse che ospiterà i Custom Image Templates

Proseguite nel wizard e nel Tab JSON date un’occhiata al formato del vostro nuovo ruolo personalizzato. Da questa scheda sarà anche possibile apportare delle modifiche cliccando sul tasto Edit oppure scaricare il file JSON dal tasto Download, per poterlo poi successivamente utilizzare per la creazione di un altro ruolo personalizzato.

Figura 8: Definizione JSON del ruolo personalizzato

Cliccando su Next avete la possibilità di concludere il wizard, dopo aver effettuato un controllo, cliccando sul tasto Create.

Figura 9: Schermata di riepilogo e creazione del nuovo ruolo personalizzato

Adesso potete procedere con l’assegnazione del ruolo alla Managed Identity che avete creato prima. Sempre dal nodo IAM del gruppo di risorse che avete scelto cliccate su Add
role assigment e proseguite nel wizard di assegnazione.

Figura 10: Asssegnazione del ruolo al gruppo di risorse che ospiterà i Custom Image Templates

Figura 11: Scelta del ruolo personalizzato creato in precedenza

Figura 12: Assegnazione del ruolo alla Managed Identity

Figura 13: Completamento del wizard di assegnazione del ruolo

Creazione dei custom image templates

Dopo aver completato tutti i prerequisiti siamo pronti per creare il nostro primo custom image template. Dal portale di Azure cercate Azure Virtual Desktop e cliccate sulla voce Custom image templates. Create una nuovo template facendo clic su +Add custom image template.

Figura 14: Creazione dei custom image templates

Figura 15: Aggiunta di un nuovo custom image template

Nella scheda Basics inserite le informazioni richieste, completando il campo Template name, decidete se volete creare un template da un modello precedente e soprattutto inserite il gruppo di risorse e la managed identity che avete creato in precedenza.

Figura 16: Scheda Basics del wizard di creazione del nuovo custom image template

Nella scheda Source image selezionate l’immagine che intendete utilizzare, scegliendo tra quelle disponibili nel Marketplace oppure tra le Managed images o le Shared images che avete creato in precedenza. Avete già dato un’occhiata alla mia guida Azure Image Builder: Creazione e gestione di immagini personalizzate delle macchine virtuali Azure?

Figura 17: Scelta del source type delle immagini da utilizzare per la creazione del template

Figura 18: Selezione delle immagini disponibili nel Marketplace

Figura 19: Source image scelta

Nella scheda Distribution agents scegliete se volete creare una Managed Image o volete caricare l’immagine in una Azure Compute Gallery.

Figura 20: Scelta della creazione di una Managed Image

Nella scheda Build properties scegliete la durata massima per attendere durante la creazione del modello di immagine (include tutte le personalizzazioni, le convalida e le distribuzioni), selezionate una dimensione per la macchina virtuale temporanea creata e usata per creare il modello, immettete un nome per un nuovo gruppo di risorse che verrà usato da Azure Image Builder per creare le risorse di Azure necessarie per creare l’immagine. Se si lascia vuoto Azure Image Builder crea il proprio gruppo di risorse predefinito.

Selezionate una rete virtuale esistente per la macchina virtuale usata per creare il modello. Se non si seleziona una rete virtuale esistente, che potrebbe essere utile magari per prendere dagli script e delle configurazioni dalla vostra rete, ne viene creata una temporanea, insieme a un indirizzo IP pubblico per la macchina virtuale temporanea.

Figura 21: Configurazione delle proprietà di creazione del modello

Nella scheda Customizations è possibile aggiungere script predefiniti da Microsoft o script personalizzati eseguiti durante la creazione dell’immagine. È questa la parte più importante ed interessante dei custom image template. Nella figura sotto ho aggiunto alcuni script predefiniti messi a disposizione nel portale. Tutti questi script sono disponibili alla pagina RDS-Templates/CustomImageTemplateScripts at master · Azure/RDS-Templates · GitHub

Figura 22: Aggiunta di alcuni script predefiniti messi a disposizione nel portale

È anche possibile aggiungere alcuni script personalizzati. Immettete un nome per lo script e l’URI (Uniform Resource Identifier) per lo script, che deve essere un percorso disponibile pubblicamente, ad esempio GitHub, un servizio Web o un account di archiviazione personalizzato. Per usare un account di archiviazione, è necessario assegnare l’identità gestita un ruolo di controllo degli accessi in base al ruolo appropriato

Io ho aggiunto lo script RDS-Templates/Test-Shortpath.ps1 at master · Azure/RDS-Templates · GitHub

Figura 23: Aggiunta di uno script personalizzato

Figura 24: Personalizzazioni scelte per il custom image template

Nella scheda Tags immettete qualsiasi nome e coppie di valori che è possibile usare per organizzare le risorse e quindi selezionare Next. Viene creato automaticamente un tag predefinito di AVD_IMAGE_TEMPLATE : AVD_IMAGE_TEMPLATE .

Figura 25: Inserimento dei Tags

Figura 26: Schermata finale del wizard di creazione del Custom Image Template

Nel giro di pochi secondi il template verrà creato e otterrete lo status Success.

Figura 27: Creazione del Custom Image template in corso

Figura 28: Creazione del Custom Image template completata

Creazione dell’immagine

Dopo aver creato correttamente il custom image template possiamo creare l’immagine personalizzata da utilizzare poi per il nostro Azure Virtual Desktop Host Pool. Selezionate il template e fate clic su Start build.

Figura 29: Creazione dell’immagine

A questo punto l’immagine inizia a essere creata. Il tempo necessario per completare dipende dal tempo necessario per il completamento degli script predefiniti e degli script personalizzati. Nel mio caso ci sono voluti circa 40 minuti. Selezionate Refresh per controllare lo stato.

Figura 30: Creazione dell’immagine in corso

Le risorse necessarie alla creazione dell’immagine vengono create in un gruppo di risorse temporaneo creato dinamicamente da Azure Image Builder al momento del lancio della creazione dell’immagine.

Figura 31: Risorse create per la realizzazione della managed image

Al termine della creazione lo stato Image build status riporterà Success.

Figura 32: Creazione della managed image completata

Nel gruppo di risorse la nuova managed image sarà disponibile e potrà essere utilizzata per la creazione di un nuovo Host Pool.

Figura 33: Managed image disponibile nel gruppo di risorse

Creare un host pool di Azure Virtual Desktop usando l’immagine personalizzata

Dopo aver creato un’immagine personalizzata, è possibile usarla durante la creazione di macchine virtuali session host. Ho già descritto la procedura nella guida Azure Virtual Desktop, Azure AD e Endpoint Manager: l’evoluzione del Modern Desktop

Al momento di decidere quali macchine virtuali utilizzare scegliete My Images e potrete visualizzare tutte le managed image che avete creato.

Figura 34: Scelta dell’immagine personalizzata creata con i custom image templates

Figura 35: Utilizzo dell’immagine personalizzata per la creazione dell’host pool

Collegandomi all’indirizzo https://client.wvd.microsoft.com/arm/webclient/v2/index.html ho potuto verificare che la creazione dell’host pool fosse andata a buon fine.

Figura 36: Accesso al session host creato con l’immagine personalizzata

Conclusioni

I Custom image templates consentono agli amministratori di creare una golden image personalizzata con la possibilità di includere una serie di personalizzazioni predefinite in Azure Virtual Desktop nonché i propri script di personalizzazione per installare altre applicazioni o set di configurazioni. In questo modo la creazione e l’aggiornamento delle immagini diventa molto più semplice ma soprattutto veloce, sicura e con gli aggiornamenti software e di sicurezza distribuiti in maniera molto più rapida.

Date anche un’occhiata al video The AVD Admins Super Power!!! – YouTube