Automatizzare la distribuzione e l’installazione di applicazioni nelle Azure VM utilizzando Azure Compute Gallery e VM Applications

Le VM Applications sono un tipo di risorsa disponibile nella Azure Compute Gallery, che in passato si chiamava Shared Image Gallery, che servono a semplificare la gestione, la distribuzione e l’installazione delle applicazioni nelle macchine virtuali in Azure.

Invece che installare le applicazioni direttamente nella VM e gestire le immagini dei sistemi operativi con le applicazioni già installate, risulta decisamente più comodo distribuire le applicazioni e i successivi aggiornamenti dall’esterno della Azure VM, attraverso le estensioni.

Al momento le VM Applications hanno delle limitazioni:

  • Richiedono che sia installato il VM agent
  • Supportano solo 5 applicazioni per macchina virtuale
  • La dimensione massima dell’applicazione non può superare 1 GB

Non ci sono dei costi extra per implementare le VM applications, tranne quelli legati allo Storage Account dove conservarle e il traffico di replica in uscita dalla Azure Compute Gallery nel caso decidiate di replicare tra Region di Azure diverse.

Creazione della Azure Compute Gallery

Per prima cosa creiamo la Azure Compute Gallery all’interno della quale metteremo le nostre VM Applications. Si tratta di una risorsa di Azure che è possibile creare molto rapidamente dall’Azure Portal.

Figura 1: Creazione di una nuova Azure Compute Gallery

Figura 2: Informazioni di base per la creazione della Azure Compute Gallery

La Azure Compute Gallery può essere condivisa e l’accesso può essere dato modificando i permessi RBAC. In preview ci sono anche altre due modalità aggiuntive, per il cui utilizzo è necessario prima registrare la sottoscrizione

Figura 3: Modalità di condivisione della Azure Compute Gallery

Figura 4: Schermata di riepilogo della creazione della Azure Compute Gallery

Figura 5: Creazione della Azure Compute Gallery completata

Per conservare le nostre applicazioni sarà necessario caricarle in un Azure Storage Account. Le applicazioni possono essere salvate in un block blob o in un page blob. Se non avete uno stogare account createne uno.

Creazione dello storage account

Figura 6: Creazione di un nuovo Storage Account

Figura 7: Informazioni di riepilogo della creazione dello Storage Account

Create un nuovo container dove poter caricare gli eseguibili delle vostre applicazioni. Potete decidere di non far autenticare l’accesso al container o ai blob in esso contenuti, come ho fatto io. In questo modo il file è accessi bile pubblicamente tramite il suo URL. In alternativa per accedere alle applicazioni e per referenziarle sarà necessario generare una Shared Access Signature (SAS). Maggiori informazioni sono disponibili alla pagina Grant limited access to data with shared access signatures (SAS) – Azure Storage | Microsoft Learn

Figura 8: Creazione di un container nello storage account e relative modalità di accesso

Procedete quindi a caricare nel container gli eseguibili delle vostre applicazioni. Io ho caricato la versione 8.4.2 di Notepad++.

Figura 9: Upload delle applicazioni nello Storage Account

Creazione della VM Application

Per creare una VM Application potete selezionare la vostra Azure Compute Gallery e cliccare sulla voce Create a VM Application Definition.

Figura 10: Creazione di una nuova VM application definition

Date un nome alla vostra applicazione. Io l’ho chiamata NotepadPlusPlus.

NOTA: Il nome che sceglierete dovrà poi essere utilizzato per il successivo deployment. Non faremo infatti riferimento al nome file .EXE che abbiamo caricato nello Storage Account.

Figura 11: Informazioni di base per la creazione della VM Application definition

Inserite le informazioni relative all’applicazione, alla sua eventuale data di scadenza, magari relativa al supporto della stessa e i link per la licenza e per la privacy.

Figura 12: Informazioni sull’applicazione

Figura 13: Schermata di riepilogo della creazione della VM application definition

Terminata la creazione della Azure VM application definition possiamo procedere alla creazione della VM Application version.

Effettivamente quelle che distribuiremo saranno applicazioni e versioni diverse della stessa applicazione. Tramite le VM Application version abbiamo la possibilità di scegliere quale applicazione e quale versione utilizzare.

Figura 14: Creazione di una nuova VM Application version

Date un numero di versione alla vostra applicazione e dichiarate qual è il Source application package. Poichè l’accesso al package contenuto nel mio storage account è pubblico posso mettere direttamente il suo URL. Altrimenti nel campo Source application package dovrete inserire la shared access signature (SAS) del file.

Figura 15: Inserimento della versione e scelta del Source application package

Figura 16: Link all’eseguibile inserito correttamente

Tipicamente gli installer degli eseguibili (.exe) utilizzano un’interfaccia grafica per l’installazione e necessitano dell’intervento dell’utente per il wizard di installazione. Ovviamente se l’installer prevede uno switch per l’installazione non assistita (silent), questa può essere utilizzata per la distribuzione dell’applicazione.

Il comando che viene seguito all’interno della VM sarà CMD.exe, che si aspetta di eseguire un file.exe. Quando l’applicazione viene copiata nella VM non avrà estensione, quindi sarà necessario prima rinominare il file copiato dallo storage account con l’estensione .exe

Non importa come si chiami il file nello storage account, il file che viene copiato nella VM si chiama come la vostra applicazione. Nel mio caso si chiama NotepadPlusPlus.

Quindi ho utilizzato come script di installazione il comando

“move .\\NotepadPlusPlus .\\NotepadPlusPlus.exe & NotepadPlusPlus.exe /S”

E come script di rimozione il comando

“%ProgramFiles%\Notepad++\uninstall.exe” /S

Figura 17: Inserimento degli script di installazione e di rimozione

Potete decidere se replicare il vostro pacchetto in region diverse. Al momento il massimo consentito è di 3 repliche.

Figura 18: Scelta della replica della VM Application version

Figura 19: Schermata di riepilogo della creazione della VM Application version

Dopo un minuto circa la VM Application version sarà creata e sarà pronta per essere distribuita.

Figura 20: VM Application version creata

Qui di seguito potete vedere un riepilogo delle risorse che sono state create finora.

Figura 21: Riepilogo delle risorse create

Distribuzione dell’app utilizzando VM Applications

Per distribuire le applicazioni utilizzando VM Applications è sufficiente selezionarle durante il wizard di creazione della macchina, nel tab Advanced, come mostrato nelle figure sotto:

Figura 22: Creazione di una nuova Azure VM

Figura 23: Scelta dell’installazione della VM application

Figura 24: Selezione della VM Application da installare

Figura 25: VM application selezionata

Figura 26: Schermata di riepilogo della creazione di una nuova Azure VM

Dopo la creazione della Azure VM potete navigare nel nodo Extensions + Applications e vedere che è stata installata una nuova estensione chiamata VMAppExtension.

Figura 27: Nella Azure VM è stata installata una nuova estensione chiamata VMAppExtension

Nella scheda VM Applications saranno poi visibili tutte le applicazioni che avete deciso di distribuire.

Figura 28: Nella scheda VM Applications sono visibili tutte le applicazioni che avete deciso di distribuire

Collegandosi alla macchina virtuale sarà possibile verificare l’avvenuta installazione dell’applicazione. Le applicazioni vengono scaricate nel percorso C:\Packages\Plugins\Microsoft.CPlat.Core.VMApplicationManagerWindows\extension version>\Downloads\<appname>\<app version> e successivamente installate.

NOTA: Le applicazioni non hanno estensione. Un caso a parte sono gli eseguibili .EXE. Infatto il CMD, che eseguirà l’installazione, si aspetta di trovare un file .exe. Questo è il motivo per cui prima gli abbiamo dato un nome con l’estensione e poi il comando di esecuzione nel momento in cui abbiamo creato la VM application version.

Figura 29: Installazione dell’applicazione avvenuta con successo

È possibile installare le VM application anche per le VM già esistenti. Basterà posizionarsi sul nodo Extensions + Applications della VM e aggiungere le applicazioni contenute nella Azure Compute Gallery.

Figura 30: Installazione delle VM application anche per le Azure VM esistenti

Figura 31: Selezione dell’applicazione

Figura 32: Applicazione caricata e installata

Collegandosi alla Azure VM sarà possibile verificare l’avvenuta installazione dell’applicazione.

Figura 33: Verifica dell’l’avvenuta installazione dell’applicazione.

Aggiornamento di un’applicazione

Per aggiornare una VM application è sufficiente caricare la nuova versione dell’applicazione nello storage account e creare una nuova VM application version. Io ho utilizzando Notepad++ 8.4.6.

Figura 34: Upload dell’eseguibile nello Storage Account

Figura 35: Creazione di una nuova versione della VM application definition

Scegliete a questo punto quale valore dare alla nuova versione, inserite l’URL dell’applicativo che si trova nello storage account (o eventualmente il suo Shared Access Signature) e i comandi per l’installazione e la rimozione dell’applicazione. Se l’installer dell’applicazione non ha uno switch per l’aggiornamento, allora verrà rimossa la vecchia versione e verrà installata la nuova versione.

Figura 36: Inserimento delle informazioni richieste per la creazione di una nuova VM application version

In questo modo avrete adesso due versioni diverse della vostra VM application, che potrete distribuire in maniera indipendente.

Figura 37: Versioni diverse della stessa VM application

Per distribuire la nuova versione dell’applicazione potete utilizzare lo stesso procedimento fatto per la prima installazione, utilizzando il nodo Extensions + Applications della Azure VM.

Figura 38: Installazione della nuova versione dell’applicazione

Come si può vedere dalla figura sotto, nella VM è stato caricato il package aggiornato ed è stata aggiornata anche l’applicazione.

Figura 39: Applicazione aggiornata con successo

Le VM application possono essere installate anche nei Virtual Machine Scale Set (VMSS), sia durante il deployment inziale che successivamente, esattamente come per le Azure VM.

Figura 40: Installazione delle VM application in un Virtual Machine Scale Set

Figura 41: Installazione o aggiornamento delle applicazioni utilizzando le VM application in un Virtual Machine Scale Set esistente

Distribuzione delle applicazioni in formato MSI con le VM Application

Esattamente come abbiamo visto con i file EXE, è possibile distribuire applicazioni MSI con le VM Application. Procuratevi l’installer della vostra applicazione e caricatelo nello storage account. Io ho utilizzato la versione Enterprise di Google Chrome.

Figura 42: Upload del file MSI nello Storage Account

Create una nuova VM Application definition nella Azure Compute Gallery.

Figura 43: una nuova VM Application definition nella Azure Compute Gallery

Popolate i campi richiesti e date il nome all’applicazione. Io ho scelto GoogleChrome.

Figura 44: Nome scelto per l’applicazione

Figura 45: Informazioni aggiuntive dell’applicazione

Figura 46: Schermata di riepilogo della creazione di una VM application definition

Procedete a questo punto a creare un VM application version.

Figura 47: Creazione di una nuova VM application version

Inserite le informazioni richieste, come la versione, l’URL del package di installazione contenuto nel vostro storage account e i comandi per l’installazione e la disinstallazione dell’applicazione. Questa volta sarà necessario dichiarare il Command interpreter da utilizzare. Di default è cmd.exe ma potete anche utilizzare Chocolatey o PowerShell.

Nel mio caso, per installare il file .MSI, ho utilizzato msiexec.exe seguito dagli switch per l’installazione e la disinstallazione:

Per l’installazione start /wait %windir%\\system32\\msiexec.exe /i GoogleChrome /quiet

Per la disinstallazione start /wait %windir%\\system32\\msiexec.exe /x GoogleChrome /quiet

Figura 48: Inserimento delle informazioni relative all’applicazione

Figura 49: Schermata di riepilogo della creazione della VM application version

Figura 50: Creazione della VM application version completata

Procedete quindi a distribuire l’applicazione con la stessa modalità vista in precedenza. Da nodo Extensions + Applications fate clic su +Add application e scegliete la nuova applicazione da distribuire.

Figura 51: Scelta della nuova applicazione da distribuire

Figura 52: Distribuzione della nuova applicazione in formato MSI utilizzando le VM application

Verificate quindi che l’applicazione sia stata installata nella vostra Azure VM o nel Virtual Machine Scale Set.

Figura 53: Verifica dell’installazione dell’applicazione

Conclusioni

L’utilizzo delle VM Applications semplifica di molto sia la prima installazione che i successivi aggiornamenti delle applicazioni, risparmiandoci la fatica di tenere le immagini delle VM aggiornate e offrendoci una modalità DevOps per poterle gestire. Decisamente un risparmio di tempo notevole, che permette il rapid deployment delle applicazioni ed un controllo della manutenzione delle stesse.