Informazioni sulla struttura e sulla sintassi dei modelli di Resource Manager
Questo articolo descrive la struttura di un modello di Azure Resource Manager (modello di ARM). Presenta le diverse sezioni di un modello e le proprietà disponibili in queste sezioni.
Questo articolo è destinato agli utenti che hanno familiarità con i modelli di ARM. Fornisce informazioni dettagliate sulla struttura del modello. 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 in Microsoft Learn, vedi Distribuire e gestire le risorse in Azure usando i modelli di ARM.
Suggerimento
Bicep è un nuovo linguaggio che offre le stesse funzionalità dei modelli di ARM, ma con una sintassi più semplice da usare. Se consideri l'infrastruttura come opzioni di codice, raccomandiamo di dare un’occhiata Bicep.
Per informazioni sugli elementi di un file Bicep, vedi Comprendere la struttura e la sintassi dei file Bicep.
Formato del modello
La struttura più semplice di un modello è costituita dagli elementi seguenti:
{
"$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
"languageVersion": "",
"contentVersion": "",
"apiProfile": "",
"definitions": { },
"parameters": { },
"variables": { },
"functions": [ ],
"resources": [ ], /* or "resources": { } with languageVersion 2.0 */
"outputs": { }
}
Nome dell'elemento | Obbligatorio | Descrizione |
---|---|---|
$schema | Sì | Percorso del file dello schema JSON (JavaScript Object Notation) che descrive la versione del linguaggio del modello. Il numero di versione usato dipende dall'ambito della distribuzione e dall'editor JSON. Se usi Visual Studio Code con l'estensione strumenti di Azure Resource Manager, usa la versione più recente per le distribuzioni di gruppi di risorse: https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json# Altri editor (incluso Visual Studio) potrebbero non essere in grado di elaborare questo schema. Per questi editor, usa: https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json# Per le distribuzioni della sottoscrizione, usa: https://schema.management.azure.com/schemas/2018-05-01/subscriptionDeploymentTemplate.json# Per le distribuzioni di un gruppo di gestione, usa: https://schema.management.azure.com/schemas/2019-08-01/managementGroupDeploymentTemplate.json# Per le distribuzioni tenant, usa: https://schema.management.azure.com/schemas/2019-08-01/tenantDeploymentTemplate.json# |
languageVersion | No | Versione della lingua del modello. Per visualizzare i miglioramenti di languageVersion 2.0, vedi languageVersion 2.0. |
contentVersion | Sì | Versione del modello (ad esempio 1.0.0.0). Questo elemento accetta tutti i valori. Usare questo valore per documentare le modifiche significative al modello. Quando si distribuiscono risorse tramite il modello, è possibile usare questo valore per assicurarsi che venga usato il modello corretto. |
apiProfile | No | Una versione dell'API che funge da raccolta di versioni delle API per i tipi di risorse. Usare questo valore per evitare di dover specificare le versioni delle API per ogni risorsa nel modello. Quando si specifica una versione del profilo API e non si specifica una versione dell'API per il tipo di risorsa, Resource Manager usa la versione dell'API per il tipo di risorsa definito nel profilo. La proprietà del profilo API è particolarmente utile quando si distribuisce un modello in ambienti diversi, ad esempio Azure Stack e Azure globale. Usare la versione del profilo API per assicurarsi che il modello usi automaticamente le versioni supportate in entrambi gli ambienti. Per un elenco delle versioni correnti del profilo API e delle versioni delle API delle risorse definite nel profilo, vedere Profilo API. Per altre informazioni, vedere Tenere sotto controllo le versioni usando i profili API. |
definizioni: | No | Schemi usati per convalidare i valori di matrici e oggetti. Le definizioni sono supportate solo in languageVersion 2.0. |
parameters | No | Valori forniti durante la distribuzione per personalizzare la distribuzione di risorse. |
variables | No | Valori usati come frammenti JSON nel modello per semplificare le espressioni di linguaggio del modello. |
functions | No | Funzioni definite dall'utente disponibili nel modello. |
resources | Sì | Tipi di risorse che vengono distribuite o aggiornate in un gruppo di risorse o sottoscrizione. |
outputs | No | Valori restituiti dopo la distribuzione. |
Ogni elemento ha proprietà che è possibile impostare. In questo articolo le sezioni del modello vengono esaminate in modo dettagliato.
Definizioni
definitions
Nella sezione del modello specifica gli schemi usati per convalidare i valori di matrice e oggetto. Definitions
può essere usato solo con languageVersion 2.0.
"definitions": {
"<definition-name": {
"type": "<data-type-of-definition>",
"allowedValues": [ "<array-of-allowed-values>" ],
"minValue": <minimum-value-for-int>,
"maxValue": <maximum-value-for-int>,
"minLength": <minimum-length-for-string-or-array>,
"maxLength": <maximum-length-for-string-or-array>,
"prefixItems": <schema-for-validating-array>,
"items": <schema-for-validating-array-or-boolean>,
"properties": <schema-for-validating-object>,
"additionalProperties": <schema-for-validating-object-or-boolean>,
"discriminator": <schema-to-apply>,
"nullable": <boolean>,
"metadata": {
"description": "<description-of-the-type-definition>"
}
}
}
Nome dell'elemento | Obbligatorio | Descrizione |
---|---|---|
definizione-nome | Sì | Nome della definizione del tipo. deve essere un identificatore JavaScript valido. |
type | Sì | Tipo della definizione del tipo. I tipi e i valori consentiti sono string, securestring, int, bool, object, secureObject e array. Vedi Tipi di dati nei modelli di ARM. |
allowedValues | No | Matrice di valori consentiti per la definizione di tipo per assicurarsi che venga fornito il valore corretto. |
minValue | No | Valore minimo per le definizioni di tipo int, questo valore è inclusivo. |
maxValue | No | Valore massimo per le definizioni di tipo int, questo valore è inclusivo. |
minLength | No | Lunghezza minima per le definizioni di tipo string, secureString e array. Questo valore è inclusivo. |
maxLength | No | Lunghezza massima per i parametri di tipo string, secureString e array. Questo valore è inclusivo. |
prefixItems | No | Schema per convalidare l'elemento di una matrice nello stesso indice. |
articoli | No | Schema applicato a tutti gli elementi della matrice il cui indice è maggiore dell'indice più grande del vincolo prefixItems , o booleano per controllare gli elementi della matrice il cui indice è maggiore dell'indice più grande del vincolo prefixItems . |
proprietà | No | Schema per la convalida dell'oggetto. |
additionalProperties | No | Schema applicato a tutte le proprietà non menzionate nel vincolo properties , o booleano per accettare qualsiasi proprietà non definita nel vincolo properties . |
discriminator | No | Schema da applicare in base a una proprietà discriminatoria. |
nullable | No | Un booleano che indica che il valore può essere null o omesso. |
description | No | Descrizione della definizione di tipo visualizzata per gli utenti tramite il portale. Per altre informazioni, consultare la sezione Comments in templates (Commenti nel modello). |
Per esempi di come usare le definizioni dei tipi, vedi Definizioni dei tipi nei modelli di ARM.
In Bicep, vedi Tipi di dati definiti dall'utente.
Parametri
Nella sezione parameters
del modello puoi specificare i valori che è possibile immettere durante la distribuzione delle risorse. È previsto un limite di 256 parametri in un modello. È possibile ridurre il numero dei parametri usando oggetti che contengono più proprietà.
Le proprietà disponibili per un parametro sono:
"parameters": {
"<parameter-name>" : {
"type" : "<type-of-parameter-value>",
"defaultValue": "<default-value-of-parameter>",
"allowedValues": [ "<array-of-allowed-values>" ],
"minValue": <minimum-value-for-int>,
"maxValue": <maximum-value-for-int>,
"minLength": <minimum-length-for-string-or-array>,
"maxLength": <maximum-length-for-string-or-array>,
"prefixItems": <schema-for-validating-array>,
"items": <schema-for-validating-array-or-boolean>,
"properties": <schema-for-validating-object>,
"additionalProperties": <schema-for-validating-object-or-boolean>,
"discriminator": <schema-to-apply>,
"nullable": <boolean>,
"metadata": {
"description": "<description-of-the parameter>"
}
}
}
Nome dell'elemento | Obbligatorio | Descrizione |
---|---|---|
parameter-name | Sì | Nome del parametro. deve essere un identificatore JavaScript valido. |
type | Sì | Tipo di valore del parametro. I tipi e i valori consentiti sono string, securestring, int, bool, object, secureObject e array. Vedi Tipi di dati nei modelli di ARM. |
defaultValue | No | Valore predefinito per il parametro, se non viene fornito alcun valore per il parametro. |
allowedValues | No | Matrice di valori consentiti per il parametro per assicurare che venga fornito il valore corretto. |
minValue | No | Il valore minimo per i parametri di tipo int, questo valore è inclusivo. |
maxValue | No | Il valore massimo per i parametri di tipo int, questo valore è inclusivo. |
minLength | No | Lunghezza minima per i parametri di tipo string, secureString e array. Questo valore è inclusivo. |
maxLength | No | Lunghezza massima per i parametri di tipo string, secureString e array. Questo valore è inclusivo. |
prefixItems | No | Definizione di tipo per convalidare l'elemento di una matrice nello stesso indice. prefixItems è supportato solo in languageVersion 2.0. |
articoli | No | Schema applicato a tutti gli elementi della matrice il cui indice è maggiore dell'indice più grande del vincolo prefixItems , o booleano per controllare gli elementi della matrice il cui indice è maggiore dell'indice più grande del vincolo prefixItems . items è supportato solo in languageVersion 2.0. |
proprietà | No | Schema per la convalida dell'oggetto. properties è supportato solo in languageVersion 2.0. |
additionalProperties | No | Schema applicato a tutte le proprietà non menzionate nel vincolo properties , o booleano per accettare qualsiasi proprietà non definita nel vincolo properties . additionalProperties è supportato solo in languageVersion 2.0. |
discriminator | No | Schema da applicare in base a una proprietà discriminatoria. discriminator è supportato solo in languageVersion 2.0. |
nullable | No | Un booleano che indica che il valore può essere null o omesso. nullable è supportato solo in languageVersion 2.0. |
description | No | Descrizione del parametro visualizzato agli utenti nel portale. Per altre informazioni, consultare la sezione Comments in templates (Commenti nel modello). |
Per esempi di come usare i parametri, vedi Parametri nei modelli di ARM.
In Bicep vedi parametri.
Variabili
Nella sezione variables
puoi costruire valori da usare in tutto il modello. Non è obbligatorio definire le variabili. Queste tuttavia consentono spesso di semplificare il modello, riducendo le espressioni complesse. Il formato di ogni variabile corrisponde a uno dei tipi di dati. È previsto un limite di 256 parametri in un modello.
L'esempio seguente mostra le opzioni disponibili per definire una variabile:
"variables": {
"<variable-name>": "<variable-value>",
"<variable-name>": {
<variable-complex-type-value>
},
"<variable-object-name>": {
"copy": [
{
"name": "<name-of-array-property>",
"count": <number-of-iterations>,
"input": <object-or-value-to-repeat>
}
]
},
"copy": [
{
"name": "<variable-array-name>",
"count": <number-of-iterations>,
"input": <object-or-value-to-repeat>
}
]
}
Per informazioni sull'uso di copy
per creare diversi valori per una variabile, vedi Iterazione variabili.
Per esempi di come usare le variabili, vedi Variabili nel modello di ARM.
In Bicep vedi variabili.
Funzioni
Nel modello è possibile creare funzioni personalizzate. Tali funzioni sono disponibili per usare il modello. Si definiscono in genere espressioni complesse che non vuoi ripetere in tutto il modello. Le funzioni definite dall'utente vengono create da espressioni e funzioni supportate nei modelli.
Quando si crea una funzione definita dall'utente, è necessario tenere presente alcune restrizioni:
- La funzione non può accedere alle variabili.
- La funzione può usare solo i parametri definiti in essa. Quando si usa la funzione parametri in una funzione definita dall'utente, è possibile usare solo i parametri per quella funzione.
- La funzione non può chiamare altre funzioni definite dall'utente.
- La funzione non può usare la funzione di riferimento.
- I parametri della funzione non possono avere valori predefiniti.
"functions": [
{
"namespace": "<namespace-for-functions>",
"members": {
"<function-name>": {
"parameters": [
{
"name": "<parameter-name>",
"type": "<type-of-parameter-value>"
}
],
"output": {
"type": "<type-of-output-value>",
"value": "<function-return-value>"
}
}
}
}
],
Nome dell'elemento | Obbligatorio | Descrizione |
---|---|---|
namespace | Sì | Spazio dei nomi per le funzioni personalizzate. Usare per evitare conflitti di denominazione con le funzioni del modello. |
function-name | Sì | Nome della funzione personalizzata. Quando si chiama la funzione, combinare il nome della funzione con lo spazio dei nomi . Ad esempio, per chiamare una funzione denominata uniqueName nello spazio dei nomi contoso, usa "[contoso.uniqueName()]" . |
parameter-name | No | Nome del parametro da usare all'interno della funzione personalizzata. |
parameter-value | No | Tipo di valore del parametro. I tipi e i valori consentiti sono string, securestring, int, bool, object, secureObject e array. |
output-type | Sì | Tipo del valore di output. I valori di output supportano gli stessi tipi dei parametri di input della funzione. |
output-value | Sì | Espressione del linguaggio di modello valutata e restituita dalla funzione. |
Per esempi di come usare funzioni personalizzate, vedi Funzioni definite dall'utente nel modello di ARM.
In Bicep le funzioni definite dall'utente non sono supportate. Bicep supporta varie funzioni e operatori.
Risorse
Nella sezione resources
puoi definire le risorse distribuite o aggiornate. È previsto un limite di 800 risorse per modello.
Le risorse vengono definite con la struttura seguente:
"resources": [
{
"condition": "<true-to-deploy-this-resource>",
"type": "<resource-provider-namespace/resource-type-name>",
"apiVersion": "<api-version-of-resource>",
"name": "<name-of-the-resource>",
"comments": "<your-reference-notes>",
"location": "<location-of-resource>",
"dependsOn": [
"<array-of-related-resource-names>"
],
"tags": {
"<tag-name1>": "<tag-value1>",
"<tag-name2>": "<tag-value2>"
},
"identity": {
"type": "<system-assigned-or-user-assigned-identity>",
"userAssignedIdentities": {
"<resource-id-of-identity>": {}
}
},
"sku": {
"name": "<sku-name>",
"tier": "<sku-tier>",
"size": "<sku-size>",
"family": "<sku-family>",
"capacity": <sku-capacity>
},
"kind": "<type-of-resource>",
"scope": "<target-scope-for-extension-resources>",
"copy": {
"name": "<name-of-copy-loop>",
"count": <number-of-iterations>,
"mode": "<serial-or-parallel>",
"batchSize": <number-to-deploy-serially>
},
"plan": {
"name": "<plan-name>",
"promotionCode": "<plan-promotion-code>",
"publisher": "<plan-publisher>",
"product": "<plan-product>",
"version": "<plan-version>"
},
"properties": {
"<settings-for-the-resource>",
"copy": [
{
"name": ,
"count": ,
"input": {}
}
]
},
"resources": [
"<array-of-child-resources>"
]
}
]
Nome dell'elemento | Obbligatorio | Descrizione |
---|---|---|
condizione | No | Booleano che indica se verrà effettuato il provisioning della risorsa durante questa distribuzione. Se true , la risorsa viene creata durante la distribuzione. Se false , la risorsa viene ignorata per questa distribuzione. Vedi condizione. |
type | Sì | Tipo di risorsa. Questo valore è una combinazione dello spazio dei nomi del provider di risorse e del tipo di risorsa (ad esempio Microsoft.Storage/storageAccounts ). Per determinare i valori disponibili, vedi riferimento al modello. Per una risorsa figlio, il formato del tipo dipende dal fatto che sia annidato all'interno della risorsa padre o definito all'esterno della risorsa padre. Vedere Impostare il nome e il tipo per le risorse figlio. |
apiVersion | Sì | Versione dell'API REST da utilizzare per la creazione della risorsa. Quando crei un nuovo modello, imposta questo valore sulla versione più recente della risorsa che stai distribuendo. Purché il modello funzioni in base alle esigenze, continua a usare la stessa versione dell'API. Continuando a usare la stessa versione dell'API, riduci al minimo il rischio che una nuova versione dell'API modifichi il funzionamento del modello. È consigliabile aggiornare la versione dell'API solo quando vuoi usare una nuova funzionalità introdotta in una versione successiva. Per determinare i valori disponibili, vedi riferimento al modello. |
name | Sì | Nome della risorsa. Il nome deve rispettare le restrizioni dei componenti URI definite dallo standard RFC3986. I servizi Azure che rendono visibile il nome della risorsa a terze parti convalidano anche il nome, per essere sicuri che non si tratti di un tentativo di spoofing per un'identità alternativa. Per una risorsa figlio, il formato del nome dipende dal fatto che sia annidato all'interno della risorsa padre o definito all'esterno della risorsa padre. Vedere Impostare il nome e il tipo per le risorse figlio. |
comments | No | Le note per documentare le risorse nel modello. Per altre informazioni, consultare la sezione Comments in templates (Commenti nel modello). |
posizione | Variabile | Aree geografiche supportate della risorsa specificata. È possibile selezionare qualsiasi località disponibile, ma è in genere opportuno sceglierne una vicina agli utenti. Di solito è anche opportuno inserire le risorse che interagiscono tra loro nella stessa area. La maggior parte dei tipi di risorsa richiede una posizione, ma alcuni tipi (ad esempio un'assegnazione di ruolo) non la richiedono. Vedi Impostare il percorso della risorsa. |
dependsOn | No | Risorse da distribuire prima della distribuzione di questa risorsa. Resource Manager valuta le dipendenze tra le risorse e le distribuisce nell'ordine corretto. Quando le risorse non sono interdipendenti, vengono distribuite in parallelo. Il valore può essere un elenco delimitato da virgole di nomi o identificatori univoci di risorse. Elencare solo le risorse distribuite in questo modello. Le risorse non definite in questo modello devono essere già esistenti. Evitare di aggiungere dipendenze non necessarie perché possono rallentare la distribuzione e creare dipendenze circolari. Per indicazioni sull'impostazione delle dipendenze, vedi Definire l'ordine di distribuzione delle risorse nei modelli di ARM. |
tag | No | Tag associati alla risorsa. Applicare i tag per organizzare in modo logico le risorse nella sottoscrizione. |
autenticazione | No | Alcune risorse supportano le identità gestite per le risorse di Azure. Tali risorse hanno un oggetto identity a livello radice della dichiarazione di risorsa. Puoi impostare se l'identità è assegnata dall'utente o assegnata dal sistema. Per le identità assegnate dall'utente, specifica un elenco di ID risorsa per le identità. Imposta la chiave sull'ID risorsa e sul valore su un oggetto vuoto. Per ulteriori informazioni, vedi Configurare le identità gestite per le risorse di Azure in una macchina virtuale di Azure tramite i modelli. |
sku | No | Alcune risorse consentono valori che definiscono lo SKU da distribuire. Ad esempio, è possibile specificare il tipo di ridondanza per un account di archiviazione. |
kind | No | Alcune risorse consentono un valore che definisce il tipo di risorsa distribuito. Ad esempio, puoi specificare il tipo di istanza di Azure Cosmos DB da creare. |
ambito | No | La proprietà scope è disponibile solo per i tipi di risorse di estensione. Usala quando specifichi un ambito diverso dall'ambito di distribuzione. Vedi Impostazione dell'ambito per le risorse di estensione nei modelli di ARM. |
copy | No | Numero di risorse da creare, se sono necessarie più istanze. La modalità predefinita è parallela. Specificare la modalità seriale quando si desidera che non tutte le risorse vengano distribuite contemporaneamente. Per altre informazioni, vedere Creare più istanze di risorse in Azure Resource Manager. |
piano | No | Alcune risorse consentono valori che definiscono il piano da distribuire. Ad esempio, è possibile specificare l'immagine del marketplace per una macchina virtuale. |
proprietà | No | Impostazioni di configurazione specifiche delle risorse. I valori per l'elemento properties corrispondono esattamente a quelli specificati nel corpo della richiesta per l'operazione API REST (metodo PUT) per creare la risorsa. È inoltre possibile specificare una matrice di copia per creare diverse istanze di una proprietà. Per determinare i valori disponibili, vedi riferimento al modello. |
risorse | No | Risorse figlio che dipendono dalla risorsa in via di definizione. Specificare solo tipi di risorsa consentiti dallo schema della risorsa padre. La dipendenza dalla risorsa padre non è implicita. È necessario definirla in modo esplicito. Vedere Impostare il nome e il tipo per le risorse figlio. |
Per supportare il nome simbolico Bicep nei modelli di ARM JSON, aggiungi languageVersion
con la versione 2.0
o più recente e modifica la definizione delle risorse da una matrice a un oggetto.
{
"$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
"languageVersion": "2.0",
"contentVersion": "1.0.0.0",
"resources": {
"<name-of-the-resource>": {
...
}
}
}
Per altre informazioni, vedere Risorse.
In Bicep, vedi risorse.
Output
Nella sezione outputs
, puoi specificare i valori restituiti dalla distribuzione. In genere, restituisci i valori dalle risorse che sono state distribuite. È previsto un limite di 64 output in un modello.
L'esempio seguente illustra la struttura di una definizione di output:
"outputs": {
"<output-name>": {
"condition": "<boolean-value-whether-to-output-value>",
"type": "<type-of-output-value>",
"value": "<output-value-expression>",
"copy": {
"count": <number-of-iterations>,
"input": <values-for-the-variable>
}
}
}
Nome dell'elemento | Obbligatorio | Descrizione |
---|---|---|
output-name | Sì | Nome del valore di output. deve essere un identificatore JavaScript valido. |
condizione | No | Valore booleano che indica se questo valore di output viene restituito. Quando è true , il valore è incluso nell'output per la distribuzione. Quando è false , il valore dell'output viene ignorato per questa distribuzione. Quando non è specificato, il valore predefinito è true . |
type | Sì | Tipo del valore di output. I valori di output supportano gli stessi tipi dei parametri di input del modello. Se specifichi securestring per il tipo di output, il valore non viene visualizzato nella cronologia di distribuzione e non può essere recuperato da un altro modello. Per usare un valore segreto in più di un modello, archivia il segreto in un insieme di credenziali delle chiavi e fai riferimento al segreto nel file dei parametri. Per altre informazioni, vedere Usare Azure Key Vault per passare valori di parametro protetti durante la distribuzione. |
value | No | Espressione del linguaggio di modello valutata e restituita come valore di output. Specifica il valore o la copia. |
copy | No | Utilizzato per restituire più di un valore per un output. Specifica il valore o la copia. Per ulteriori informazioni, vedi Iterazione degli output nei modelli di ARM. |
Per esempi di come usare gli output, vedi Output nel modello di ARM.
In Bicep, vedi output.
Commenti e metadati
Sono disponibili diverse opzioni per aggiungere commenti e metadati al modello.
Commenti
Per i commenti inline, puoi usare //
o /* ... */
. In Visual Studio Code, salva i file di parametri con commenti come il JSON con commenti tipo di file (JSONC), in caso contrario viene visualizzato un messaggio di errore che indica che "Commenti non consentiti in JSON".
Nota
Quando usi l'interfaccia della riga di comando di Azure per distribuire modelli con commenti, utilizza la versione 2.3.0 o successiva e specifica l'opzione --handle-extended-json-format
.
{
"type": "Microsoft.Compute/virtualMachines",
"apiVersion": "2023-03-01",
"name": "[variables('vmName')]", // to customize name, change it in variables
"location": "[parameters('location')]", //defaults to resource group location
"dependsOn": [ /* storage account and network interface must be deployed first */
"[resourceId('Microsoft.Storage/storageAccounts/', variables('storageAccountName'))]",
"[resourceId('Microsoft.Network/networkInterfaces/', variables('nicName'))]"
],
In Visual Studio Code, l'estensione Strumenti di Azure Resource Manager può rilevare automaticamente un modello di ARM e modificare la modalità del linguaggio. Se vedi Modello di Azure Resource Manager nell'angolo inferiore destro di Visual Studio Code, puoi usare i commenti inline. In questo modo i commenti inline non verranno più contrassegnati come non validi.
In Bicep, vedi commenti.
Metadati UFX
È possibile aggiungere un oggetto metadata
praticamente ovunque nel modello. Resource Manager ignora l'oggetto, ma l'editor JSON potrebbe segnalare che la proprietà non è valida. Nell'oggetto definire le proprietà necessarie.
{
"$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"metadata": {
"comments": "This template was developed for demonstration purposes.",
"author": "Example Name"
},
Per parameters
, aggiungi un oggetto metadata
con una proprietà description
.
"parameters": {
"adminUsername": {
"type": "string",
"metadata": {
"description": "User name for the Virtual Machine."
}
},
Durante la distribuzione del modello tramite il portale, il testo specificato nella descrizione viene usato automaticamente come suggerimento per tale parametro.
Per resources
, aggiungi un elemento comments
o un oggetto metadata
. L'esempio seguente mostra sia un elemento comments
che un oggetto metadata
.
"resources": [
{
"type": "Microsoft.Storage/storageAccounts",
"apiVersion": "2022-09-01",
"name": "[format('{0}{1}', 'storage', uniqueString(resourceGroup().id))]",
"comments": "Storage account used to store VM disks",
"location": "[parameters('location')]",
"metadata": {
"comments": "These tags are needed for policy compliance."
},
"tags": {
"Dept": "[parameters('deptName')]",
"Environment": "[parameters('environment')]"
},
"sku": {
"name": "Standard_LRS"
},
"kind": "Storage",
"properties": {}
}
]
Per outputs
, aggiungi un oggetto metadata
al valore di output.
"outputs": {
"hostname": {
"type": "string",
"value": "[reference(variables('publicIPAddressName')).dnsSettings.fqdn]",
"metadata": {
"comments": "Return the fully qualified domain name"
}
},
Non puoi aggiungere un oggetto metadata
alle funzioni definite dall'utente.
Stringhe multilinea
Puoi suddividere una stringa in più linee. Ad esempio, vedi la proprietà location
e uno dei commenti nell'esempio JSON seguente.
Nota
Per distribuire modelli con stringhe multilinea, usa Azure PowerShell o l'interfaccia della riga di comando di Azure. Per l'interfaccia della riga di comando, usa la versione 2.3.0 o successiva e specifica l'opzione --handle-extended-json-format
.
Le stringhe multilinea non sono supportate quando distribuisci il modello tramite il portale di Azure, una pipeline DevOps o l'API REST.
{
"type": "Microsoft.Compute/virtualMachines",
"apiVersion": "2023-03-01",
"name": "[variables('vmName')]", // to customize name, change it in variables
"location": "[
parameters('location')
]", //defaults to resource group location
/*
storage account and network interface
must be deployed first
*/
"dependsOn": [
"[resourceId('Microsoft.Storage/storageAccounts/', variables('storageAccountName'))]",
"[resourceId('Microsoft.Network/networkInterfaces/', variables('nicName'))]"
],
In Bicep, vedi stringhe multilinea.
languageVersion 2.0
Nota
L'uso di qualsiasi languageVersion
che termina in -experimental
non è consigliato negli ambienti di produzione perché le funzionalità sperimentali possono essere modificate in qualsiasi momento.
Nota
La versione corrente dell'estensione Strumenti di Azure Resource Manager per Visual Studio Code non riconosce i miglioramenti apportati in languageVersion 2.0.
Per usare languageVersion 2.0, aggiungi "languageVersion": "2.0"
al tuo modello:
{
"$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
"languageVersion": "2.0",
"contentVersion": "1.0.0.0",
"resources": {
"<name-of-the-resource>": {
...
}
}
}
Miglioramenti e modifiche introdotti in languageVersion 2.0:
- Usa il nome simbolico nel modello JSON di ARM. Per ulteriori informazioni, vedi Usare nome simbolico.
- Usa il nome simbolico nei cicli di copia delle risorse. Vedi Usare il nome simbolico.
- Usa il nome simbolico nelle matrici
dependsOn
. Vedi DependsOn e In base alle risorse di un ciclo. - Usa il nome simbolico anziché il nome della risorsa nella funzione
reference
. Vedi le informazioni di riferimento. - Una funzione riferimenti() che restituisce una matrice di oggetti che rappresentano gli stati di runtime di una raccolta di risorse. Vedi riferimenti.
- Usa la proprietà della risorsa "esistente" per dichiarare le risorse esistenti per ARM da leggere anziché distribuire una risorsa. Vedi Dichiarare le risorse esistenti.
- Crea tipi definiti dall'utente. Vedi Definizione del tipo.
- Vincoli di convalida dei tipi aggregati aggiuntivi da usare nei parametri e negli output.
- Il valore predefinito per la proprietà
expressionEvaluationOptions
èinner
. Il valoreouter
è bloccato. Vedi Ambito di valutazione delle espressioni nei modelli annidati. - La funzione
deployment
restituisce un subset limitato di proprietà. Vedi Deployment (Distribuzione). - Se la risorsa Distribuzioni viene usata in una distribuzione con nome simbolico, usa apiVersion
2020-09-01
o versione successiva. - Nella definizione della risorsa non sono più necessari valori di doppio escape all'interno di un'espressione. Vedi Caratteri di escape.
L'uso di una delle funzionalità Bicep seguenti abilita automaticamente la generazione del codice della versione 2.0 del linguaggio:
- tipi definiti dall'utente
- funzioni definite dall'utente
- importazioni in fase di compilazione
- funzionalità sperimentali
Passaggi successivi
- Per visualizzare modelli completi per molti tipi diversi di soluzioni, vedere Modelli di avvio rapido di Azure.
- Per informazioni dettagliate sulle funzioni che è possibile usare in un modello, vedi Funzioni del modello di ARM.
- Per unire più modelli durante la distribuzione, vedi Uso di modelli collegati e annidati durante la distribuzione delle risorse di Azure.
- Per consigli sulla creazione di modelli, vedi Procedure consigliate per i modelli di ARM.
- Per le risposte alle domande frequenti, vedi Domande frequenti sui modelli di ARM.