Riutilizzare le espressioni usando le variabili del modello di Azure Resource Manager

Completato

Nello scenario precedente si è deciso di usare un'espressione costituita da diverse funzioni del modello di Azure Resource Manager (ARM) per creare un nome univoco per l'account di archiviazione di Azure. Questa flessibilità garantisce che tutti i clienti possano usare il modello di ARM per le distribuzioni, ma si nota che l'aggiunta di questa espressione in diverse posizioni costituisce un problema per la gestione del modello. Si decide di usare una variabile per l'espressione del nome dell'account di archiviazione in modo che sia possibile definire l'espressione in una posizione e riutilizzarla in tutto il modello.

Che cos'è una variabile del modello di Resource Manager?

Una variabile del modello di Resource Manager è un costrutto che contiene un valore per un uso successivo. Le variabili sono particolarmente adatte quando è necessario specificare un valore in diverse posizioni in un modello. Indipendentemente dalla posizione in cui viene usata la variabile nel modello, Resource Manager la sostituisce con il valore risolto.

Ad esempio, è presente un'espressione che definisce un valore per il percorso di una risorsa. Per diverse risorse definite nel modello è necessario specificare una posizione. È possibile creare una variabile per contenere l'espressione relativa alla posizione e quindi usare la variabile ovunque sia necessario specificare una posizione.

Vantaggi dell'uso delle variabili del modello di Resource Manager

Le variabili del modello di Resource Manager consentono di scrivere un'espressione una sola volta e di usarla in diverse posizioni. La manutenzione dell'espressione viene inoltre eseguita in un'unica posizione e il modello è più leggibile.

Come si usano le variabili del modello di Resource Manager?

Le variabili del modello di Resource Manager sono definite nella sezione variables: {} di un modello. Di seguito è ad esempio illustrata l'espressione per il nome dell'account di archiviazione definito nell'unità precedente. Ora definisce il valore per la variabile storageName.

"variables": {
  "storageName": "[concat(toLower(parameters('storageNamePrefix')), uniqueString(resourceGroup().id))]"
},

Si usa quindi la variabile nel modello in ogni punto in cui è necessario il nome dell'account di archiviazione:

"resources": [
  {
    "type": "Microsoft.Storage/storageAccounts",
    "name": "[variables('storageName')]",
    ...
  }
]

Suggerimenti per le variabili del modello di Resource Manager

Le variabili del modello sono specificate come notazione Camel. Sono più adatte per i valori che è necessario specificare più di una volta, soprattutto se il valore è un'espressione complessa.

Non usare la funzione reference nella sezione variables di un modello. La funzione reference viene risolta durante il runtime e le variabili vengono risolte durante l'analisi del modello. Non usare inoltre le variabili per apiVersion in una risorsa. La versione dell'API determina lo schema della risorsa e spesso non è possibile modificare la versione senza modificare le proprietà della risorsa.