Descrivere Azure Resource Manager e i modelli di ARM

Completato

Azure Resource Manager (ARM) è il servizio di distribuzione e gestione di Azure. Fornisce un livello di gestione che consente di creare, aggiornate ed eliminare risorse nell'account Azure. Ogni volta che si esegue un'operazione con le risorse di Azure, ARM è coinvolto.

Quando un utente invia una richiesta da uno strumento, un'API o un SDK di Azure, ARM riceve la richiesta, la autentica e la autorizza. Quindi, ARM invia la richiesta al servizio di Azure, che esegue l'azione richiesta. Poiché tutte le richieste vengono gestite con la stessa API, i risultati e le funzionalità risultano coerenti in tutti i vari strumenti.

Vantaggi offerti da Azure Resource Manager

Con Azure Resource Manager è possibile:

  • Gestire l'infrastruttura tramite modelli dichiarativi, invece che con script. Un modello di Resource Manager è un file JSON che definisce ciò che si vuole distribuire in Azure.
  • Distribuire, gestire e monitorare tutte le risorse per la soluzione come un gruppo, invece di gestire singolarmente tali risorse.
  • Ridistribuire la soluzione nel corso del ciclo di vita dello sviluppo e avere la certezza che le risorse vengano distribuite in uno stato coerente.
  • Definire le dipendenze tra risorse in modo che vengano distribuite nell'ordine corretto.
  • Applicare il controllo di accesso a tutti i servizi perché il controllo degli accessi in base al ruolo è integrato in modo nativo nella piattaforma di gestione.
  • Applicare tag a tutte risorse per organizzarle in modo logico nella sottoscrizione.
  • Chiarire la fatturazione dell'organizzazione visualizzando i costi per un gruppo di risorse che condividono lo stesso tag.

Il video seguente offre una panoramica di Azure Resource Manager.

Infrastruttura come codice

Infrastruttura come codice è un concetto che indica che l'infrastruttura viene gestita come righe di codice. A livello introduttivo, è simile all'uso di Azure Cloud Shell, Azure PowerShell o dell'interfaccia della riga di comando di Azure per gestire e configurare le risorse. Man mano che si acquisisce maggiore familiarità con il cloud, è possibile usare il concetto di infrastruttura come codice per gestire intere distribuzioni usando modelli e configurazioni ripetibili. I modelli di ARM e Bicep sono due esempi di uso dell'infrastruttura come codice con Azure Resource Manager per gestire l'ambiente.

Modelli di Gestione risorse di Azure

Usando i modelli di ARM è possibile descrivere le risorse da usare in un formato JSON dichiarativo. Con un modello di ARM, il codice di distribuzione viene verificato prima dell'esecuzione di qualsiasi codice. Ciò garantisce che le risorse vengano create e connesse correttamente. Il modello orchestra quindi la creazione di queste risorse in parallelo. In altri termini, se servono 50 istanze della stessa risorsa, tutte e 50 le istanze vengono create contemporaneamente.

In definitiva, lo sviluppatore o il professionista IT o DevOps deve semplicemente definire la configurazione e lo stato desiderati di ogni risorsa nel modello di Resource Manager, che fa il resto. I modelli possono anche eseguire script di PowerShell e Bash prima o dopo la configurazione della risorsa.

Vantaggi dell'uso dei modelli di Resource Manager

I modelli di ARM offrono molti vantaggi durante la pianificazione della distribuzione delle risorse di Azure. Alcuni dei vantaggi sono i seguenti:

  • Sintassi dichiarativa: i modelli di ARM consentono di creare e distribuire un'intera infrastruttura di Azure in modo dichiarativo. Sintassi dichiarativa significa dichiarare ciò che si vuole distribuire, ma non è necessario scrivere la sequenza e i comandi di programmazione effettivi per distribuire le risorse.
  • 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. È possibile usare lo stesso modello di ARM per distribuire più ambienti di sviluppo/test, sapendo che tutti gli ambienti sono uguali.
  • Orchestrazione: non è necessario preoccuparsi delle complessità delle operazioni di ordinamento. Azure Resource Manager gestisce la distribuzione delle risorse interdipendenti, in modo che vengano create nell'ordine corretto. Quando possibile, Azure Resource Manager distribuisce le risorse in parallelo, in modo che le distribuzioni terminino 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. Ad esempio, è possibile creare un modello per uno stack di macchine virtuali e quindi annidare tale modello all'interno di modelli che distribuiscono interi ambienti e tale stack di macchine virtuali verrà distribuito in modo coerente in ognuno dei modelli di ambiente.
  • 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. Gli script di distribuzione consentono di completare la configurazione dell'ambiente end-to-end in un singolo modello di ARM.

Bicep

Bicep è un linguaggio che usa sintassi dichiarativa per distribuire le risorse di Azure. Un file Bicep definisce l'infrastruttura e la configurazione. Quindi, ARM distribuisce quindi tale ambiente in base al file Bicep. Anche se simili a un modello di ARM, scritto in JSON, i file Bicep tendono a usare uno stile più semplice e conciso.

Alcuni vantaggi di Bicep sono:

  • Supporto per tutti i tipi di risorse e versioni di API: Bicep supporta immediatamente tutte le versioni di anteprima e in disponibilità generale per i servizi di Azure. Non appena un provider di risorse introduce nuovi tipi di risorse e versioni di API, è possibile usarli nel file Bicep. Non è necessario attendere che gli strumenti vengano aggiornati prima di usare i nuovi servizi.
  • Sintassi semplice: rispetto al modello JSON equivalente, i file Bicep sono più concisi e più facili da leggere. Bicep non richiede alcuna conoscenza precedente dei linguaggi di programmazione. La sintassi Bicep è dichiarativa e specifica le risorse e le relative proprietà da distribuire.
  • 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 file più volte e ottenere gli stessi tipi di risorse nel medesimo stato. È possibile sviluppare un file che rappresenta lo stato desiderato, invece di molti file separati per rappresentare gli aggiornamenti.
  • 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, in modo che le distribuzioni terminino più velocemente rispetto alle distribuzioni seriali. Il modello si distribuisce tramite un comando invece che tramite più comandi imperativi.
  • Modularità: è possibile suddividere il codice Bicep in parti gestibili usando i moduli. Il modulo distribuisce un set di risorse correlate. I moduli consentono di riutilizzare il codice e di semplificare lo sviluppo. Aggiungere il modulo a un file Bicep ogni volta che è necessario distribuire tali risorse.