Tutta la piattaforma Microsoft Azure offre un sistema unificato per la gestione delle risorse tramite molteplici strumenti come PowerShell, CLI e REST API. Che sia un database o una virtual machine, queste risorse sono raggruppate all'interno di un resource group, oltre che alla region di appartenenza. Il sistema di gestione, di nome Azure Resource Manager (ARM), dispone di un meccanismo basato su deployment che prende in carico ogni creazione o modifica che facciamo alle risorse e le esegue mantenendo uno storico.
Questo sistema può essere sfruttato anche per preparare dei template basati su sintassi JSON che definiscono un modello di risorse da creare: database, web app, virtual machine, pricing tier e configurazioni varie. Possono disporre di parametri, di variabili o di funzioni per rendere questi template dinamici in modo da applicarli facilmente ad altre subscription e resource group.
Possiamo sfruttare questa caratteristica anche per clonare una serie di risorse create manualmente dal portale. Pensiamo ad una situazione in cui dobbiamo riprodurre due ambienti, di staging e di produzione, identici nelle configurazioni, oppure portare le risorse su un'altra region per aumentare l'affidabilità. Il portale Azure per questo scopo mette a disposizione una funzione rapida per generare l'XML delle resource group. E' sufficiente andare sul gruppo desiderato e sulla voce Export template.
Il motore genera un JSON per rappresentare completamente tutte le nostre risorse e lo fa dettagliando ogni singola configurazione. Il JSON è molto verboso, per garantire l'uguaglianza nella creazione delle risorse, ma molto probabilmente molte delle configurazioni sono quelle predefinite di ogni risorsa. Anche i parametri in ingresso sono molteplici, ma possiamo sfruttare il pulsante Download per scaricare il JSON e applicare delle modifiche, magari applicando delle regole di generazione dei nomi.
Nell'effettuare il download, oltre al JSON disponiamo dello script PowerShell per effettuare il deploy su un'altra subscription o un altro resource group. In alternativa possiamo creare dal portale una nuova risorsa di tipo Template deployment.
Il wizard ci permette di caricare e modificare un template e di effettuarne direttamente il deploy.
A seconda del numero delle risorse l'operazione può impiegare qualche minuto ed è facile sbagliare qualche impostazione, perciò per lo sviluppo consigliamo di creare sempre un resource group apposito per ogni tentativo di deploy, da andare poi ad eliminare. Da notare, infine, che i deployment possono essere incrementali ed andare ad intervenire anche su resource group già preparati, applicando la differenza tra le impostazioni.
Per altre informazioni: https://docs.microsoft.com/it-it/azure/azure-resource-manager/resource-group-authoring-templates
Commenti
Per inserire un commento, devi avere un account.
Fai il login e torna a questa pagina, oppure registrati alla nostra community.
Approfondimenti
Utilizzare la funzione EF.Parameter per forzare la parametrizzazione di una costante con Entity Framework
Eseguire una query su SQL Azure tramite un workflow di GitHub
Utilizzare gRPC su App Service di Azure
Creare una libreria CSS universale - Rotazione degli elementi
Cancellare una run di un workflow di GitHub
Eseguire operazioni sui blob con Azure Storage Actions
Il nuovo controllo Range di Blazor 9
Sfruttare GPT-4o realtime su Azure Open AI per conversazioni vocali
Recuperare App Service cancellati su Azure
Creare una libreria CSS universale: Clip-path
Path addizionali per gli asset in ASP.NET Core MVC
Criptare la comunicazione con mTLS in Azure Container Apps
I più letti di oggi
- Recuperare automaticamente un utente e aggiungerlo ad un gruppo di Azure DevOps
- Supportare la sessione affinity di Azure App Service con Application Gateway
- Gli oggetti CallOut di Expression Blend 4.0
- Conoscere il rendering Server o WebAssembly a runtime in Blazor
- Utilizzare un DataContext specifico per la modalità design time di Blend e Visual Studio nei controlli Silverlight
- Più sezioni di configurazione attraverso il nodo <configSections /> del web.config