Che cosa sono i modelli di Azure Resource Manager?
Con il passaggio al cloud, molti team hanno adottato metodi di sviluppo agile. Questi team devono agire rapidamente. Devono distribuire ripetutamente le loro soluzioni nel cloud e sapere che la loro infrastruttura è in uno stato affidabile. Man mano che l'infrastruttura è diventata parte del processo iterativo, la divisione tra operazioni e sviluppo è scomparsa. I team devono gestire l'infrastruttura e il codice dell'applicazione tramite un processo unificato.
Per soddisfare queste sfide, automatizzare le distribuzioni e usare la pratica dell'infrastruttura come codice. Nel codice si definisce l'infrastruttura che deve essere distribuita. Il codice dell'infrastruttura fa parte del progetto. Proprio come il codice dell'applicazione, archiviare il codice dell'infrastruttura in un repository di origine e crearne la versione. Chiunque nel team può eseguire il codice e distribuire ambienti simili.
Per implementare l'infrastruttura come codice per le soluzioni di Azure, usare modelli di Azure Resource Manager (modelli di ARM). Un modello è un file JSON (JavaScript Object Notation) che definisce l'infrastruttura e la configurazione del progetto. Il modello usa una sintassi dichiarativa che consente di indicare ciò che si intende distribuire senza dover scrivere la sequenza dei comandi di programmazione per crearlo. Nel modello si specificano le risorse da distribuire e le proprietà per tali risorse. È anche possibile specificare in quale gruppo di risorse vengono distribuite tali risorse.
Suggerimento
È stato introdotto un nuovo linguaggio denominato Bicep che offre le stesse funzionalità dei modelli arm, ma con una sintassi più semplice da usare. Ogni file Bicep viene convertito automaticamente in un modello di ARM durante la distribuzione. Se si considera l'infrastruttura come opzioni di codice, raccomandiamo di dare un’occhiata Bicep. Per ulteriori informazioni, vedere Che cos'è Bicep?.
Perché scegliere i modelli di ARM?
Se vuoi scegliere tra l'uso di modelli di ARM e un'altra infrastruttura come servizi di codice, considera i seguenti vantaggi dell'uso dei modelli:
Sintassi dichiarativa: i modelli di ARM consentono di creare e distribuire un'intera infrastruttura di Azure in modo dichiarativo. Ad esempio, è possibile distribuire non solo le macchine virtuali, ma anche l'infrastruttura di rete, i sistemi di archiviazione e tutte le altre risorse necessarie.
Risultati ripetibili: è possibile distribuire ripetutamente l'infrastruttura nel corso del ciclo di vita dello sviluppo garantendo al contempo che le risorse vengano distribuite in uno stato coerente. I modelli sono idempotenti, il che significa che è possibile distribuire lo stesso modello più volte e ottenere gli stessi tipi di risorse nel medesimo stato. È possibile sviluppare un modello che rappresenta lo stato desiderato, anziché sviluppare molti modelli separati per rappresentare gli aggiornamenti. Ad esempio, il file seguente crea un account di archiviazione. Se si distribuisce questo modello e l'account di archiviazione con le proprietà specificate esiste già, non viene apportata alcuna modifica.
{
"$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"parameters": {
"location": {
"type": "string",
"defaultValue": "[resourceGroup().location]"
}
},
"resources": {
"mystore": {
"type": "Microsoft.Storage/storageAccounts",
"apiVersion": "2023-04-01",
"name": "mystorageaccount",
"location": "[parameters('location')]",
"sku": {
"name": "Standard_LRS"
},
"kind": "StorageV2"
}
}
}
Orchestrazione: non è necessario preoccuparsi delle complessità delle operazioni di ordinamento. Resource Manager gestisce la distribuzione delle risorse interdipendenti, in modo che vengano create nell'ordine corretto. Quando possibile, Resource Manager distribuisce le risorse in parallelo, quindi le distribuzioni terminano più velocemente rispetto alle distribuzioni seriali. Il modello si distribuisce tramite un comando anziché tramite più comandi imperativi.
File modulari: se le distribuzioni diventano più complesse, è possibile suddividere i modelli in componenti più piccoli riutilizzabili e collegarli in fase di distribuzione. È anche possibile annidare un modello all'interno di un altro modello.
Creare qualsiasi risorsa di Azure: è possibile usare immediatamente nuovi servizi e funzionalità di Azure nei modelli. Non appena un provider di risorse introduce nuove risorse, è possibile distribuire tali risorse tramite modelli. Non è necessario attendere che gli strumenti o i moduli vengano aggiornati prima di usare i nuovi servizi.
Estendibilità: con gli script di distribuzione è possibile aggiungere script di PowerShell o Bash ai modelli. Gli script di distribuzione estendono la possibilità di configurare le risorse durante la distribuzione. È possibile includere uno script nel modello o archiviarlo in un'origine esterna e farvi riferimento nel modello. Con gli script di distribuzione, è possibile completare la configurazione dell'ambiente end-to-end in un singolo modello di Resource Manager.
Test: per assicurarsi che il modello segua le linee guida consigliate, testarlo con il kit di strumenti del modello arm (arm-ttk). Questo kit di test è uno script di PowerShell che è possibile scaricare da GitHub. Il kit di strumenti semplifica lo sviluppo di competenze con il linguaggio del modello.
Anteprima modifiche: usare l'operazione di simulazione per visualizzare in anteprima le modifiche prima di distribuire il modello. Con le operazioni di simulazione vengono visualizzate le risorse da creare, aggiornare o eliminare ed eventuali proprietà delle risorse da modificare. L'operazione di simulazione controlla lo stato corrente dell'ambiente ed elimina la necessità di gestire lo stato.
Convalida integrata: il modello viene distribuito solo dopo aver superato la convalida. Resource Manager controlla il modello prima di avviare la distribuzione per assicurarsi che abbia esito positivo. È meno probabile che la distribuzione si arresti in fase di completamento.
Distribuzioni rilevate: nel portale di Azure è possibile esaminare la cronologia delle distribuzioni e ottenere informazioni sulla distribuzione del modello. È possibile visualizzare il modello distribuito, i valori dei parametri inseriti e tutti i valori di output. Altre infrastrutture come i servizi di codice non vengono rilevate tramite il portale.
Criteri come codice: I criteri di Azure sono criteri come framework di codice per automatizzare la governance. Se si usano i criteri di Azure, la correzione dei criteri viene eseguita sulle risorse non conformi quando vengono distribuite tramite modelli.
Progetti di distribuzione: è possibile sfruttare i vantaggi dei Blueprints (Progetti) offerti da Microsoft per soddisfare gli standard normativi e di conformità. Questi progetti includono modelli predefiniti per varie architetture.
Integrazione CI/CD: è possibile integrare modelli in strumenti di integrazione continua e distribuzione continua (CI/CD). Questa integrazione automatizza le pipeline di versione per aggiornamenti rapidi e affidabili dell'applicazione e dell'infrastruttura. Usando Azure DevOps e l'attività del modello di Resource Manager, è possibile usare Azure Pipelines per creare e distribuire in modo continuo progetti di modelli di ARM. Per ulteriori informazioni, vedere Progetto VS con pipeline e Esercitazione: Integrazione continua dei modelli di Azure Resource Manager con Azure Pipelines.
Codice esportabile: è possibile ottenere un modello per un gruppo di risorse esistente esportando lo stato corrente del gruppo di risorse o visualizzando il modello usato per una distribuzione specifica. Per conoscere la sintassi del modello è molto utile visualizzare il modello esportato.
Strumenti di creazione: è possibile creare modelli con Visual Studio Code e l'estensione dello strumento modello. Si ottiene IntelliSense, l'evidenziazione della sintassi, la Guida in linea e molte altre funzioni del linguaggio. Oltre a Visual Studio Code, puoi anche usare Visual Studio.
File del modello
All'interno del modello è possibile scrivere le espressioni del modello che estendono le funzionalità di JSON. Queste espressioni usano le funzioni fornite da Resource Manager.
Il modello include le sezioni seguenti:
Parametri: specificare i valori durante la distribuzione personalizzati per ambienti diversi quando si usa lo stesso modello.
Variabili : definire i valori riutilizzati nei modelli. È possibile crearli dai valori dei parametri.
Funzioni definite dall'utente: creare funzioni personalizzate che semplifichino il modello.
Risorse: specificare le risorse da distribuire.
Output: restituire i valori dalle risorse distribuite.
Processo di distribuzione dei modelli
Quando si distribuisce un modello, Resource Manager lo converte in operazioni API REST. Ad esempio, quando Resource Manager riceve un modello con la definizione di risorsa seguente:
"resources": [
{
"type": "Microsoft.Storage/storageAccounts",
"apiVersion": "2022-09-01",
"name": "mystorageaccount",
"location": "centralus",
"sku": {
"name": "Standard_LRS"
},
"kind": "StorageV2"
},
]
Converte la definizione nell'operazione API REST seguente, che invia al provider di risorse Microsoft.Storage:
PUT
https://management.azure.com/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Storage/storageAccounts/mystorageaccount?api-version=2022-09-01
REQUEST BODY
{
"location": "centralus",
"sku": {
"name": "Standard_LRS"
},
"kind": "StorageV2",
"properties": {}
}
Si noti che l'oggetto apiVersion impostato nel modello per la risorsa viene usato come versione dell'API per l'operazione REST. È possibile distribuire ripetutamente il modello e avere la certezza che continui a funzionare. Usando la stessa versione dell'API, non è necessario preoccuparsi delle modifiche che causano un'interruzione che potrebbero essere introdotte nelle versioni successive.
Per distribuire un modello, usare una delle opzioni seguenti:
- Azure portal
- Interfaccia della riga di comando di Azure
- PowerShell
- REST API
- Pulsante nel repository GitHub
- Azure Cloud Shell
Progettazione di modelli
Definire modelli e gruppi di risorse in base alla modalità di gestione della soluzione. È ad esempio possibile distribuire l'applicazione a tre livelli tramite un singolo modello in un singolo gruppo di risorse.
Non è necessario definire l'intera infrastruttura in un singolo modello. Spesso, è consigliabile dividere i requisiti di distribuzione in un set di modelli specifici mirati, in base allo scopo. È anche possibile riusare i modelli per altre soluzioni. Per distribuire una particolare soluzione, creare un modello principale che collega tutti i modelli necessari. L'immagine seguente illustra come distribuire una soluzione a tre livelli tramite un modello padre che include tre modelli annidati.
Se si prevede che i livelli abbiano cicli di vita separati, è possibile distribuire i tre livelli in gruppi di risorse separati. Le risorse possono essere comunque collegate a risorse in altri gruppi di risorse.
Per informazioni sui modelli annidati, vedere Uso di modelli collegati con Azure Resource Manager.
Condividere modelli
Dopo aver creato il modello, è possibile condividerlo con altri utenti dell'organizzazione. Le specifiche del modello consentono di archiviare un modello come tipo di risorsa. Usare il controllo degli accessi in base al ruolo per gestire l'accesso alla specifica del modello. Gli utenti con accesso in lettura alla specifica di modello possono distribuirlo, ma non modificare il modello.
Questo approccio consente di condividere in modo sicuro i modelli che soddisfano gli standard dell'organizzazione.
Ottenere supporto
Di seguito sono riportati i passaggi per l'apertura di un ticket di supporto per i problemi correlati al modello di Azure Resource Manager (ARM):
Apri il portale di Azure.
Selezionare l'icona Supporto e risoluzione dei problemi nell'angolo in alto a destra.
In Descrizione breve del problema immettere Modello di Resource Manager e quindi selezionare Vai.
In Con quale servizio si è verificato un problema? selezionare Portale in Monitoraggio e gestione e quindi selezionare Avanti.
Selezionare una sottoscrizione, quindi selezionare Avanti.
Selezionare Problema con i modelli di ARM e quindi selezionare Avanti.
Passaggi successivi
- Per un'esercitazione dettagliata che illustra il processo di creazione di un modello, vedi Esercitazione: Creare e distribuire il primo modello di ARM.
- Per informazioni sui modelli di ARM tramite un set guidato di moduli Learn, vedere Distribuire e gestire le risorse in Azure usando i modelli di ARM.
- Per informazioni sulle proprietà nei file modello, vedere Comprendere la struttura e la sintassi dei modelli di ARM.
- Per informazioni sull'esportazione dei modelli, vedere Avvio rapido: Creare e distribuire modelli di ARM usando il portale di Azure.
- Per le risposte alle domande frequenti, vedere Domande frequenti sui modelli di ARM.