Comprendere la struttura e la sintassi dei modelli ARMUnderstand the structure and syntax of ARM templates

Questo articolo descrive la struttura di un modello di Azure Resource Manager (ARM).This article describes the structure of an Azure Resource Manager (ARM) template. Presenta le diverse sezioni di un modello e le proprietà disponibili in queste sezioni.It presents the different sections of a template and the properties that are available in those sections.

Questo articolo è destinato agli utenti che hanno familiarità con i modelli ARM.This article is intended for users who have some familiarity with ARM templates. Fornisce informazioni dettagliate sulla struttura del modello.It provides detailed information about the structure of the template. Per un'esercitazione dettagliata che illustra il processo di creazione di un modello, vedere esercitazione: creare e distribuire il primo modello di Azure Resource Manager.For a step-by-step tutorial that guides you through the process of creating a template, see Tutorial: Create and deploy your first Azure Resource Manager template.

Formato del modelloTemplate format

La struttura più semplice di un modello è costituita dagli elementi seguenti:In its simplest structure, a template has the following elements:

{
  "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
  "contentVersion": "",
  "apiProfile": "",
  "parameters": {  },
  "variables": {  },
  "functions": [  ],
  "resources": [  ],
  "outputs": {  }
}
Nome dell'elementoElement name ObbligatoriaRequired DescriptionDescription
$schema$schema Yes Percorso del file di schema JSON che descrive la versione del linguaggio del modello.Location of the JSON schema file that describes the version of the template language. Il numero di versione usato dipende dall'ambito della distribuzione e dall'editor JSON.The version number you use depends on the scope of the deployment and your JSON editor.

Se si usa vs code con l'estensione strumenti di Azure Resource Manager, usare la versione più recente per le distribuzioni di gruppi di risorse:If you're using VS Code with the Azure Resource Manager tools extension, use the latest version for resource group deployments:
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.Other editors (including Visual Studio) may not be able to process this schema. Per gli editor, usare:For those editors, use:
https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#

Per le distribuzioni della sottoscrizione, usare: For subscription deployments, use:
https://schema.management.azure.com/schemas/2018-05-01/subscriptionDeploymentTemplate.json#

Per le distribuzioni di gruppi di gestione, usare:For management group deployments, use:
https://schema.management.azure.com/schemas/2019-08-01/managementGroupDeploymentTemplate.json#

Per le distribuzioni tenant, usare:For tenant deployments, use:
https://schema.management.azure.com/schemas/2019-08-01/tenantDeploymentTemplate.json#
contentVersioncontentVersion Yes Versione del modello (ad esempio 1.0.0.0).Version of the template (such as 1.0.0.0). Questo elemento accetta tutti i valori.You can provide any value for this element. Usare questo valore per documentare le modifiche significative al modello.Use this value to document significant changes in your template. Quando si distribuiscono risorse tramite il modello, è possibile usare questo valore per assicurarsi che venga usato il modello corretto.When deploying resources using the template, this value can be used to make sure that the right template is being used.
apiProfileapiProfile NoNo Versione API che funge da raccolta di versioni API per i tipi di risorse.An API version that serves as a collection of API versions for resource types. Usare questo valore per evitare di dover specificare le versioni API per ogni risorsa nel modello.Use this value to avoid having to specify API versions for each resource in the template. Quando si specifica una versione del profilo API e non si specifica una versione API per il tipo di risorsa, Gestione risorse usa la versione dell'API per quel tipo di risorsa definito nel profilo.When you specify an API profile version and don't specify an API version for the resource type, Resource Manager uses the API version for that resource type that is defined in the profile.

La proprietà del profilo API è particolarmente utile quando si distribuisce un modello in ambienti diversi, ad esempio Azure Stack e Azure globale.The API profile property is especially helpful when deploying a template to different environments, such as Azure Stack and global Azure. Usare la versione del profilo API per assicurarsi che il modello usi automaticamente le versioni supportate in entrambi gli ambienti.Use the API profile version to make sure your template automatically uses versions that are supported in both environments. Per un elenco delle versioni correnti del profilo API e delle versioni API delle risorse definite nel profilo, vedere profilo API.For a list of the current API profile versions and the resources API versions defined in the profile, see API Profile.

Per altre informazioni, vedere tenere traccia delle versioni usando i profili API.For more information, see Track versions using API profiles.
parametersparameters NoNo Valori forniti durante la distribuzione per personalizzare la distribuzione di risorse.Values that are provided when deployment is executed to customize resource deployment.
variablesvariables NoNo Valori usati come frammenti JSON nel modello per semplificare le espressioni di linguaggio del modello.Values that are used as JSON fragments in the template to simplify template language expressions.
funzionifunctions NoNo Funzioni definite dall'utente disponibili nel modello.User-defined functions that are available within the template.
risorseresources Yes Tipi di risorse che vengono distribuite o aggiornate in un gruppo di risorse o sottoscrizione.Resource types that are deployed or updated in a resource group or subscription.
outputsoutputs NoNo Valori restituiti dopo la distribuzione.Values that are returned after deployment.

Ogni elemento ha proprietà che è possibile impostare.Each element has properties you can set. In questo articolo le sezioni del modello vengono esaminate in modo dettagliato.This article describes the sections of the template in greater detail.

ParametriParameters

Nella sezione parameters del modello si possono specificare i valori che è possibile immettere durante la distribuzione delle risorse.In the parameters section of the template, you specify which values you can input when deploying the resources. È previsto un limite di 256 parametri in un modello.You're limited to 256 parameters in a template. È possibile ridurre il numero di parametri utilizzando oggetti che contengono più proprietà.You can reduce the number of parameters by using objects that contain multiple properties.

Le proprietà disponibili per un parametro sono:The available properties for a parameter are:

"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-parameters>,
    "metadata": {
      "description": "<description-of-the parameter>"
    }
  }
}
Nome dell'elementoElement name ObbligatoriaRequired DescriptionDescription
Nome parametroparameter-name Yes Nome del parametro.Name of the parameter. Deve essere un identificatore JavaScript valido.Must be a valid JavaScript identifier.
tipotype Yes Tipo di valore del parametro.Type of the parameter value. I tipi e i valori consentiti sono string, securestring, int, bool, object, secureObject e array.The allowed types and values are string, securestring, int, bool, object, secureObject, and array. Vedere tipi di dati.See Data types.
defaultValuedefaultValue NoNo Valore predefinito per il parametro, se non viene fornito alcun valore per il parametro.Default value for the parameter, if no value is provided for the parameter.
allowedValuesallowedValues NoNo Matrice di valori consentiti per il parametro per assicurare che venga fornito il valore corretto.Array of allowed values for the parameter to make sure that the right value is provided.
minValueminValue NoNo Il valore minimo per i parametri di tipo int, questo valore è inclusivo.The minimum value for int type parameters, this value is inclusive.
maxValuemaxValue NoNo Il valore massimo per i parametri di tipo int, questo valore è inclusivo.The maximum value for int type parameters, this value is inclusive.
minLengthminLength NoNo Lunghezza minima per i parametri di tipo string, secureString e array. Questo valore è inclusivo.The minimum length for string, secure string, and array type parameters, this value is inclusive.
maxLengthmaxLength NoNo Lunghezza massima per i parametri di tipo string, secureString e array. Questo valore è inclusivo.The maximum length for string, secure string, and array type parameters, this value is inclusive.
descriptiondescription NoNo Descrizione del parametro visualizzato agli utenti nel portale.Description of the parameter that is displayed to users through the portal. Per altre informazioni, consultare la sezione Comments in templates (Commenti nel modello).For more information, see Comments in templates.

Per esempi relativi all'uso dei parametri, vedere parametri nei modelli Azure Resource Manager.For examples of how to use parameters, see Parameters in Azure Resource Manager templates.

Tipi di datiData types

Per i numeri interi passati come parametri inline, l'intervallo di valori può essere limitato dall'SDK o dallo strumento da riga di comando usato per la distribuzione.For integers passed as inline parameters, the range of values may be limited by the SDK or command-line tool you use for deployment. Ad esempio, quando si usa PowerShell per distribuire un modello, i tipi integer possono variare da-2147483648 a 2147483647.For example, when using PowerShell to deploy a template, integer types can range from -2147483648 to 2147483647. Per evitare questa limitazione, specificare valori integer di grandi dimensioni in un file di parametri.To avoid this limitation, specify large integer values in a parameter file. I tipi di risorsa applicano i propri limiti per le proprietà Integer.Resource types apply their own limits for integer properties.

Quando si specificano valori booleani e Integer nel modello, non racchiudere il valore tra virgolette.When specifying boolean and integer values in your template, don't surround the value with quotation marks. Valori stringa iniziale e finale con virgolette doppie.Start and end string values with double quotation marks.

Gli oggetti iniziano con una parentesi graffa sinistra e terminano con una parentesi graffa destra.Objects start with a left brace and end with a right brace. Le matrici iniziano con una parentesi quadra aperta e terminano con una parentesi quadra chiusa.Arrays start with a left bracket and end with a right bracket.

Quando si imposta un parametro su una stringa sicura o un oggetto protetto, il valore del parametro non viene salvato nella cronologia di distribuzione e non viene registrato.When you set a parameter to a secure string or secure object, the value of the parameter isn't saved to the deployment history and isn't logged. Tuttavia, se si imposta il valore sicuro su una proprietà che non prevede un valore sicuro, il valore non è protetto.However, if you set that secure value to a property that isn't expecting a secure value, the value isn't protected. Se, ad esempio, si imposta una stringa sicura su un tag, tale valore viene archiviato come testo normale.For example, if you set a secure string to a tag, that value is stored as plain text. Usare le stringhe sicure per le password e i segreti.Use secure strings for passwords and secrets.

Per esempi di formattazione dei tipi di dati, vedere formati di tipo di parametro.For samples of formatting data types, see Parameter type formats.

VariabiliVariables

Nella sezione variables è possibile costruire valori da usare in tutto il modello.In the variables section, you construct values that can be used throughout your template. Non è obbligatorio definire le variabili. Queste tuttavia consentono spesso di semplificare il modello, riducendo le espressioni complesse.You don't need to define variables, but they often simplify your template by reducing complex expressions.

Nell'esempio seguente vengono illustrate le opzioni disponibili per la definizione di una variabile:The following example shows the available options for defining a variable:

"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 copy di per creare più valori per una variabile, vedere iterazione delle variabili.For information about using copy to create several values for a variable, see Variable iteration.

Per esempi relativi all'uso delle variabili, vedere variabili nel modello di Azure Resource Manager.For examples of how to use variables, see Variables in Azure Resource Manager template.

FunzioniFunctions

Nel modello è possibile creare funzioni personalizzate.Within your template, you can create your own functions. Tali funzioni sono disponibili per usare il modello.These functions are available for use in your template. In genere, è possibile definire espressioni complesse che non si vuole ripetere in tutto il modello.Typically, you define complicated expressions that you don't want to repeat throughout your template. Le funzioni definite dall'utente vengono create da espressioni e funzioni supportate nei modelli.You create the user-defined functions from expressions and functions that are supported in templates.

Quando si crea una funzione definita dall'utente, è necessario tenere presente alcune restrizioni:When defining a user function, there are some restrictions:

  • La funzione non può accedere alle variabili.The function can't access variables.
  • La funzione può usare solo i parametri definiti in essa.The function can only use parameters that are defined in the function. Quando si usa la funzione Parameters in una funzione definita dall'utente, si è limitati ai parametri della funzione.When you use the parameters function within a user-defined function, you're restricted to the parameters for that function.
  • La funzione non può chiamare altre funzioni definite dall'utente.The function can't call other user-defined functions.
  • La funzione non può usare la funzione di riferimento.The function can't use the reference function.
  • I parametri della funzione non possono avere valori predefiniti.Parameters for the function can't have default values.
"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'elementoElement name ObbligatoriaRequired DescriptionDescription
spazio dei nominamespace Yes Spazio dei nomi per le funzioni personalizzate.Namespace for the custom functions. Usare per evitare conflitti di denominazione con le funzioni di modello.Use to avoid naming conflicts with template functions.
Nome funzionefunction-name Yes Nome della funzione personalizzata.Name of the custom function. Quando si chiama la funzione, combinare il nome della funzione con lo spazio dei nomi.When calling the function, combine the function name with the namespace. Ad esempio, per chiamare una funzione denominata UniqueName nello spazio dei nomi contoso, usare "[contoso.uniqueName()]" .For example, to call a function named uniqueName in the namespace contoso, use "[contoso.uniqueName()]".
Nome parametroparameter-name NoNo Nome del parametro da usare all'interno della funzione personalizzata.Name of the parameter to be used within the custom function.
parameter-valueparameter-value NoNo Tipo di valore del parametro.Type of the parameter value. I tipi e i valori consentiti sono string, securestring, int, bool, object, secureObject e array.The allowed types and values are string, securestring, int, bool, object, secureObject, and array.
tipo di outputoutput-type Yes Tipo del valore di output.Type of the output value. I valori di output supportano gli stessi tipi dei parametri di input della funzione.Output values support the same types as function input parameters.
valore di outputoutput-value Yes Espressione del linguaggio del modello valutata e restituita dalla funzione.Template language expression that is evaluated and returned from the function.

Per esempi relativi all'uso di funzioni personalizzate, vedere funzioni definite dall'utente in Azure Resource Manager modello.For examples of how to use custom functions, see User-defined functions in Azure Resource Manager template.

RisorseResources

Nella sezione risorse è possibile definire le risorse da distribuire o aggiornare.In the resources section, you define the resources that are deployed or updated.

Le risorse vengono definite con la struttura seguente:You define resources with the following structure:

"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>"
      },
      "sku": {
          "name": "<sku-name>",
          "tier": "<sku-tier>",
          "size": "<sku-size>",
          "family": "<sku-family>",
          "capacity": <sku-capacity>
      },
      "kind": "<type-of-resource>",
      "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'elementoElement name ObbligatoriaRequired DescriptionDescription
condizionecondition NoNo Valore booleano che indica se verrà eseguito il provisioning della risorsa durante questa distribuzione.Boolean value that indicates whether the resource will be provisioned during this deployment. Se true, la risorsa viene creata durante la distribuzione.When true, the resource is created during deployment. Se false, la risorsa viene ignorata per questa distribuzione.When false, the resource is skipped for this deployment. Vedere Condition.See condition.
tipotype Yes Tipo di risorsa.Type of the resource. Questo valore è una combinazione dello spazio dei nomi del provider di risorse e del tipo di risorsa, ad esempio Microsoft. storage/storageAccounts.This value is a combination of the namespace of the resource provider and the resource type (such as Microsoft.Storage/storageAccounts). Per determinare i valori disponibili, vedere riferimento ai modelli.To determine available values, see template reference. 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.For a child resource, the format of the type depends on whether it's nested within the parent resource or defined outside of the parent resource. Vedere Impostare il nome e il tipo per le risorse figlio.See Set name and type for child resources.
apiVersionapiVersion Yes Versione dell'API REST da utilizzare per la creazione della risorsa.Version of the REST API to use for creating the resource. Per determinare i valori disponibili, vedere riferimento ai modelli.To determine available values, see template reference.
namename Yes Nome della risorsa.Name of the resource. Il nome deve rispettare le restrizioni dei componenti URI definite dallo standard RFC3986.The name must follow URI component restrictions defined in RFC3986. I servizi di Azure che espongono il nome della risorsa alle parti esterne convalidano il nome per assicurarsi che non sia un tentativo di falsificare un'altra identità.Azure services that expose the resource name to outside parties validate the name to make sure it isn't an attempt to spoof another identity. 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.For a child resource, the format of the name depends on whether it's nested within the parent resource or defined outside of the parent resource. Vedere Impostare il nome e il tipo per le risorse figlio.See Set name and type for child resources.
commentscomments NoNo Le note per documentare le risorse nel modello.Your notes for documenting the resources in your template. Per altre informazioni, consultare la sezione Comments in templates (Commenti nel modello).For more information, see Comments in templates.
posizionelocation VariaVaries Aree geografiche supportate della risorsa specificata.Supported geo-locations of the provided resource. È possibile selezionare qualsiasi località disponibile, ma è in genere opportuno sceglierne una vicina agli utenti.You can select any of the available locations, but typically it makes sense to pick one that is close to your users. Di solito è anche opportuno inserire le risorse che interagiscono tra loro nella stessa area.Usually, it also makes sense to place resources that interact with each other in the same region. La maggior parte dei tipi di risorsa richiede una posizione, ma alcuni tipi (ad esempio un'assegnazione di ruolo) non la richiedono.Most resource types require a location, but some types (such as a role assignment) don't require a location. Vedere set Resource Location.See Set resource location.
dependsOndependsOn NoNo Risorse da distribuire prima della distribuzione di questa risorsa.Resources that must be deployed before this resource is deployed. Resource Manager valuta le dipendenze tra le risorse e le distribuisce nell'ordine corretto.Resource Manager evaluates the dependencies between resources and deploys them in the correct order. Quando le risorse non sono interdipendenti, vengono distribuite in parallelo.When resources aren't dependent on each other, they're deployed in parallel. Il valore può essere un elenco delimitato da virgole di nomi o identificatori univoci di risorse.The value can be a comma-separated list of a resource names or resource unique identifiers. Elencare solo le risorse distribuite in questo modello.Only list resources that are deployed in this template. Le risorse non definite in questo modello devono essere già esistenti.Resources that aren't defined in this template must already exist. Evitare di aggiungere dipendenze non necessarie perché possono rallentare la distribuzione e creare dipendenze circolari.Avoid adding unnecessary dependencies as they can slow your deployment and create circular dependencies. Per indicazioni sull'impostazione delle dipendenze, vedere l'articolo relativo alla definizione delle dipendenze nei modelli di Azure Resource Manager.For guidance on setting dependencies, see Defining dependencies in Azure Resource Manager templates.
tagstags NoNo Tag associati alla risorsa.Tags that are associated with the resource. Applicare i tag per organizzare in modo logico le risorse nella sottoscrizione.Apply tags to logically organize resources across your subscription.
skusku NoNo Alcune risorse consentono valori che definiscono lo SKU da distribuire.Some resources allow values that define the SKU to deploy. Ad esempio, è possibile specificare il tipo di ridondanza per un account di archiviazione.For example, you can specify the type of redundancy for a storage account.
kindkind NoNo Alcune risorse consentono un valore che definisce il tipo di risorsa distribuito.Some resources allow a value that defines the type of resource you deploy. Ad esempio, è possibile specificare il tipo di Cosmos DB da creare.For example, you can specify the type of Cosmos DB to create.
copycopy NoNo Numero di risorse da creare, se sono necessarie più istanze.If more than one instance is needed, the number of resources to create. La modalità predefinita è parallela.The default mode is parallel. Specificare la modalità seriale quando si desidera che non tutte le risorse vengano distribuite contemporaneamente.Specify serial mode when you don't want all or the resources to deploy at the same time. Per altre informazioni, vedere Creare più istanze di risorse in Azure Resource Manager.For more information, see Create several instances of resources in Azure Resource Manager.
pianoplan NoNo Alcune risorse consentono valori che definiscono il piano da distribuire.Some resources allow values that define the plan to deploy. Ad esempio, è possibile specificare l'immagine del marketplace per una macchina virtuale.For example, you can specify the marketplace image for a virtual machine.
propertiesproperties NoNo Impostazioni di configurazione specifiche delle risorse.Resource-specific configuration settings. 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.The values for the properties are the same as the values you provide in the request body for the REST API operation (PUT method) to create the resource. È inoltre possibile specificare una matrice di copia per creare diverse istanze di una proprietà.You can also specify a copy array to create several instances of a property. Per determinare i valori disponibili, vedere riferimento ai modelli.To determine available values, see template reference.
resourcesresources NoNo Risorse figlio che dipendono dalla risorsa in via di definizione.Child resources that depend on the resource being defined. Specificare solo tipi di risorsa consentiti dallo schema della risorsa padre.Only provide resource types that are permitted by the schema of the parent resource. La dipendenza dalla risorsa padre non è implicita.Dependency on the parent resource isn't implied. È necessario definirla in modo esplicito.You must explicitly define that dependency. Vedere Impostare il nome e il tipo per le risorse figlio.See Set name and type for child resources.

OutputOutputs

Nella sezione dell'output è possibile specificare i valori restituiti dalla distribuzione.In the Outputs section, you specify values that are returned from deployment. In genere, i valori vengono restituiti dalle risorse distribuite.Typically, you return values from resources that were deployed.

L'esempio seguente illustra la struttura di una definizione di output:The following example shows the structure of an output definition:

"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'elementoElement name ObbligatoriaRequired DescriptionDescription
nome di outputoutput-name Yes Nome del valore di output.Name of the output value. Deve essere un identificatore JavaScript valido.Must be a valid JavaScript identifier.
condizionecondition NoNo Valore booleano che indica se questo valore di output viene restituito.Boolean value that indicates whether this output value is returned. Quando è true, il valore è incluso nell'output per la distribuzione.When true, the value is included in the output for the deployment. Quando è false, il valore dell'output viene ignorato per questa distribuzione.When false, the output value is skipped for this deployment. Quando non è specificato, il valore predefinito è true.When not specified, the default value is true.
tipotype Yes Tipo del valore di output.Type of the output value. I valori di output supportano gli stessi tipi dei parametri di input del modello.Output values support the same types as template input parameters. Se si specifica SecureString per il tipo di output, il valore non viene visualizzato nella cronologia di distribuzione e non può essere recuperato da un altro modello.If you specify securestring for the output type, the value isn't displayed in the deployment history and can't be retrieved from another template. Per usare un valore segreto in più di un modello, archiviare il segreto in un Key Vault e fare riferimento al segreto nel file dei parametri.To use a secret value in more than one template, store the secret in a Key Vault and reference the secret in the parameter file. Per altre informazioni, vedere Usare Azure Key Vault per passare valori di parametro protetti durante la distribuzione.For more information, see Use Azure Key Vault to pass secure parameter value during deployment.
Valorevalue NoNo Espressione del linguaggio di modello valutata e restituita come valore di output.Template language expression that is evaluated and returned as output value. Specificare un valore o una copia.Specify either value or copy.
copycopy NoNo Utilizzato per restituire più di un valore per un output.Used to return more than one value for an output. Specificare il valore o la copia.Specify value or copy. Per altre informazioni, vedere iterazione di output nei modelli Azure Resource Manager.For more information, see Output iteration in Azure Resource Manager templates.

Per esempi relativi all'uso degli output, vedere output nel modello di Azure Resource Manager.For examples of how to use outputs, see Outputs in Azure Resource Manager template.

Commenti e metadatiComments and metadata

Sono disponibili diverse opzioni per aggiungere commenti e metadati al modello.You have a few options for adding comments and metadata to your template.

CommentiComments

Per i commenti inline, è possibile usare // o, /* ... */ ma questa sintassi non funziona con tutti gli strumenti.For inline comments, you can use either // or /* ... */ but this syntax doesn't work with all tools. Se si aggiunge questo stile di commento, assicurarsi che gli strumenti usati supportino i commenti JSON inline.If you add this style of comment, be sure the tools you use support inline JSON comments.

Nota

Per distribuire modelli con commenti usando l'interfaccia della riga di comando di Azure con la versione 2.3.0 o precedente, è necessario usare l' --handle-extended-json-format opzione.To deploy templates with comments by using Azure CLI with version 2.3.0 or older, you must use the --handle-extended-json-format switch.

{
  "type": "Microsoft.Compute/virtualMachines",
  "apiVersion": "2018-10-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 Azure Resource Manager può rilevare automaticamente Gestione risorse modello e modificare di conseguenza la modalità della lingua.In Visual Studio Code, the Azure Resource Manager Tools extension can automatically detect Resource Manager template and change the language mode accordingly. Se viene visualizzato Azure Resource Manager modello nell'angolo in basso a destra di vs code, è possibile usare i commenti inline.If you see Azure Resource Manager Template at the bottom-right corner of VS Code, you can use the inline comments. In questo modo i commenti inline non verranno più contrassegnati come non validi.The inline comments are no longer marked as invalid.

Modalità modello di Visual Studio Code Azure Resource Manager

MetadatiMetadata

È possibile aggiungere un oggetto metadata praticamente ovunque nel modello.You can add a metadata object almost anywhere in your template. Resource Manager ignora l'oggetto, ma l'editor JSON potrebbe segnalare che la proprietà non è valida.Resource Manager ignores the object, but your JSON editor may warn you that the property isn't valid. Nell'oggetto definire le proprietà necessarie.In the object, define the properties you need.

{
  "$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, aggiungere un oggetto metadata con una proprietà description.For parameters, add a metadata object with a description property.

"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.When deploying the template through the portal, the text you provide in the description is automatically used as a tip for that parameter.

Mostra il suggerimento relativo al parametro

Per resources, aggiungere un elemento comments o un oggetto metadata.For resources, add a comments element or a metadata object. L'esempio seguente mostra sia un elemento comments sia un oggetto metadata.The following example shows both a comments element and a metadata object.

"resources": [
  {
    "type": "Microsoft.Storage/storageAccounts",
    "apiVersion": "2018-07-01",
    "name": "[concat('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, aggiungere un oggetto metadata al valore di output.For outputs, add a metadata object to the output value.

"outputs": {
  "hostname": {
    "type": "string",
    "value": "[reference(variables('publicIPAddressName')).dnsSettings.fqdn]",
    "metadata": {
      "comments": "Return the fully qualified domain name"
    }
  },

Non è possibile aggiungere un oggetto metadata alle funzioni definite dall'utente.You can't add a metadata object to user-defined functions.

Stringhe a più righeMulti-line strings

È possibile suddividere una stringa in più righe.You can break a string into multiple lines. Vedere ad esempio la proprietà Location e uno dei commenti nell'esempio JSON seguente.For example, see the location property and one of the comments in the following JSON example.

{
  "type": "Microsoft.Compute/virtualMachines",
  "apiVersion": "2018-10-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'))]"
  ],

Per distribuire modelli con stringhe a più righe usando l'interfaccia della riga di comando di Azure con la versione 2.3.0 o precedente, è necessario usare l' --handle-extended-json-format opzione.To deploy templates with multi-line strings by using Azure CLI with version 2.3.0 or older, you must use the --handle-extended-json-format switch.

Passaggi successiviNext steps