Comprendere la struttura e la sintassi dei modelli di Azure Resource MangerUnderstand the structure and syntax of Azure Resource Manager templates

Questo articolo descrive la struttura di un modello di Azure Resource Manager.This article describes the structure of an Azure Resource Manager 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. Il modello è composto da JSON ed espressioni che è possibile usare per creare valori per la distribuzione.The template consists of JSON and expressions that you can use to construct values for your deployment. Per un'esercitazione dettagliata sulla creazione di un modello, vedere Creare il primo modello di Azure Resource Manager.For a step-by-step tutorial on creating a template, see Create 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 contains the following elements:

{
    "$schema": "http://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#",
    "contentVersion": "",
    "parameters": {  },
    "variables": {  },
    "resources": [  ],
    "outputs": {  }
}
Nome dell'elementoElement name ObbligatorioRequired DescrizioneDescription
$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. Usare l'URL riportato nell'esempio precedente.Use the URL shown in the preceding example.
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. 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.
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.
resourcesresources Yes Tipi di risorse che vengono distribuite o aggiornate in un gruppo di risorse.Resource types that are deployed or updated in a resource group.
outputsoutputs NoNo Valori restituiti dopo la distribuzione.Values that are returned after deployment.

Ogni elemento contiene proprietà che è possibile impostare.Each element contains properties you can set. L'esempio seguente contiene la sintassi completa per un modello:The following example contains the full syntax for a template:

{
    "$schema": "http://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#",
    "contentVersion": "",
    "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>" 
            }
        }
    },
    "variables": {
        "<variable-name>": "<variable-value>",
        "<variable-object-name>": {
            <variable-complex-type-value>
        },
        "<variable-object-name>": {
            "copy": [
                {
                    "name": "<name-of-array-property>",
                    "count": <number-of-iterations>,
                    "input": {
                        <properties-to-repeat>
                    }
                }
            ]
        },
        "copy": [
            {
                "name": "<variable-array-name>",
                "count": <number-of-iterations>,
                "input": {
                    <properties-to-repeat>
                }
            }
        ]
    },
    "resources": [
      {
          "condition": "<boolean-value-whether-to-deploy>",
          "apiVersion": "<api-version-of-resource>",
          "type": "<resource-provider-namespace/resource-type-name>",
          "name": "<name-of-the-resource>",
          "location": "<location-of-resource>",
          "tags": {
              "<tag-name1>": "<tag-value1>",
              "<tag-name2>": "<tag-value2>"
          },
          "comments": "<your-reference-notes>",
          "copy": {
              "name": "<name-of-copy-loop>",
              "count": "<number-of-iterations>",
              "mode": "<serial-or-parallel>",
              "batchSize": "<number-to-deploy-serially>"
          },
          "dependsOn": [
              "<array-of-related-resource-names>"
          ],
          "properties": {
              "<settings-for-the-resource>",
              "copy": [
                  {
                      "name": ,
                      "count": ,
                      "input": {}
                  }
              ]
          },
          "resources": [
              "<array-of-child-resources>"
          ]
      }
    ],
    "outputs": {
        "<outputName>" : {
            "type" : "<type-of-output-value>",
            "value": "<output-value-expression>"
        }
    }
}

In questo articolo le sezioni del modello vengono esaminate in modo dettagliato.This article describes the sections of the template in greater detail.

Espressioni e funzioniExpressions and functions

La sintassi di base del modello è JSON.The basic syntax of the template is JSON. Le espressioni e le funzioni estendono ad ogni modo i valori JSON disponibili all'interno del modello.However, expressions and functions extend the JSON values available within the template. Le espressioni vengono scritte all'interno di valori letterali stringa JSON il cui primo e ultimo carattere sono le parentesi quadre: rispettivamente[ e ].Expressions are written within JSON string literals whose first and last characters are the brackets: [ and ], respectively. Il valore dell'espressione viene valutato quando viene distribuito il modello.The value of the expression is evaluated when the template is deployed. Sebbene sia scritto come valore letterale stringa, il risultato della valutazione dell'espressione può essere di un tipo JSON diverso, ad esempio una matrice o un numero intero, a seconda dell'espressione effettiva.While written as a string literal, the result of evaluating the expression can be of a different JSON type, such as an array or integer, depending on the actual expression. Per avere una stringa letterale che inizi con una parentesi quadra [, ma che non venga interpretata come espressione, è necessario aggiungere un'altra parentesi in modo che la stringa inizi con [[.To have a literal string start with a bracket [, but not have it interpreted as an expression, add an extra bracket to start the string with [[.

Solitamente, si usano espressioni con funzioni per eseguire operazioni per la configurazione della distribuzione.Typically, you use expressions with functions to perform operations for configuring the deployment. Proprio come in JavaScript, le chiamate di funzione sono formattate come functionName(arg1,arg2,arg3).Just like in JavaScript, function calls are formatted as functionName(arg1,arg2,arg3). Per i riferimenti alle proprietà si usano il punto e gli operatori [index].You reference properties by using the dot and [index] operators.

L'esempio seguente illustra come usare diverse funzioni al momento di costruite i valori:The following example shows how to use several functions when constructing values:

"variables": {
    "location": "[resourceGroup().location]",
    "usernameAndPassword": "[concat(parameters('username'), ':', parameters('password'))]",
    "authorizationHeader": "[concat('Basic ', base64(variables('usernameAndPassword')))]"
}

Per l’elenco completo delle funzioni del modello, vedere Funzioni del modello di Gestione risorse di Azure.For the full list of template functions, see Azure Resource Manager template functions.

parametersParameters

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. I valori dei parametri consentono di personalizzare la distribuzione fornendo valori specifici per un determinato ambiente, ad esempio sviluppo, test e produzione.These parameter values enable you to customize the deployment by providing values that are tailored for a particular environment (such as dev, test, and production). Non è obbligatorio specificare i parametri nel modello, ma senza di essi il modello distribuisce sempre le stesse risorse con lo stesso nome, località e proprietà.You do not have to provide parameters in your template, but without parameters your template would always deploy the same resources with the same names, locations, and properties.

I parametri vengono definiti con la struttura seguente:You define parameters with the following structure:

"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 ObbligatorioRequired DescrizioneDescription
parameterNameparameterName Yes Nome del parametro.Name of the parameter. Deve essere un identificatore JavaScript valido.Must be a valid JavaScript identifier.
typetype Yes Tipo di valore del parametro.Type of the parameter value. Vedere l'elenco dei tipi consentiti riportato dopo questa tabella.See the list of allowed types after this table.
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, secureString, 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, secureString, and array type parameters, this value is inclusive.
Descrizionedescription NoNo Descrizione del parametro visualizzato agli utenti nel portale.Description of the parameter that is displayed to users through the portal.

I valori e i tipi consentiti sono:The allowed types and values are:

  • stringstring
  • secureStringsecureString
  • intint
  • boolbool
  • objectobject
  • secureObjectsecureObject
  • arrayarray

Per specificare un parametro come facoltativo, fornire un valore defaultValue (che può essere anche una stringa vuota).To specify a parameter as optional, provide a defaultValue (can be an empty string).

Se nel modello si specifica un nome di parametro che corrisponde a un parametro nel comando per distribuire il modello, si crea una potenziale ambiguità in merito ai valori forniti.If you specify a parameter name in your template that matches a parameter in the command to deploy the template, there is potential ambiguity about the values you provide. Resource Manager risolve questa confusione aggiungendo il suffisso FromTemplate al parametro del modello.Resource Manager resolves this confusion by adding the postfix FromTemplate to the template parameter. Se, ad esempio, si include un parametro denominato ResourceGroupName nel modello, si crea un conflitto con il parametro ResourceGroupName nel cmdlet New-AzureRmResourceGroupDeployment.For example, if you include a parameter named ResourceGroupName in your template, it conflicts with the ResourceGroupName parameter in the New-AzureRmResourceGroupDeployment cmdlet. Durante la distribuzione verrà quindi richiesto di specificare un valore per ResourceGroupNameFromTemplate.During deployment, you are prompted to provide a value for ResourceGroupNameFromTemplate. In generale, è consigliabile evitare questa confusione non attribuendo ai parametri lo stesso nome dei parametri usati per operazioni di distribuzione.In general, you should avoid this confusion by not naming parameters with the same name as parameters used for deployment operations.

Nota

Per tutte le password, le chiavi e altre informazioni riservate si consiglia di usare il tipo secureString .All passwords, keys, and other secrets should use the secureString type. Se si passano dati sensibili in un oggetto JSON, usare il tipo secureObject.If you pass sensitive data in a JSON object, use the secureObject type. Non è possibile leggere i parametri di modello di tipo secureString o secureObject dopo la distribuzione delle risorse.Template parameters with secureString or secureObject types cannot be read after resource deployment.

La voce seguente nella cronologia di distribuzione indica ad esempio il valore per una stringa e un oggetto, ma non per secureString e secureObject.For example, the following entry in the deployment history shows the value for a string and object but not for secureString and secureObject.

visualizzare i valori della distribuzione

Il seguente esempio mostra come definire i parametri:The following example shows how to define parameters:

"parameters": {
    "siteName": {
        "type": "string",
        "defaultValue": "[concat('site', uniqueString(resourceGroup().id))]"
    },
    "hostingPlanName": {
        "type": "string",
        "defaultValue": "[concat(parameters('siteName'),'-plan')]"
    },
    "skuName": {
        "type": "string",
        "defaultValue": "F1",
        "allowedValues": [
          "F1",
          "D1",
          "B1",
          "B2",
          "B3",
          "S1",
          "S2",
          "S3",
          "P1",
          "P2",
          "P3",
          "P4"
        ]
    },
    "skuCapacity": {
        "type": "int",
        "defaultValue": 1,
        "minValue": 1
    }
}

Per informazioni sull'immissione di valori di parametro durante la distribuzione vedere Distribuire le risorse con i modelli di Azure Resource Manager e Azure PowerShell.For how to input the parameter values during deployment, see Deploy an application with Azure Resource Manager template.

variablesVariables

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, che però permettono spesso di semplificare il modello riducendo le espressioni complesse.You do not need to define variables, but they often simplify your template by reducing complex expressions.

Le variabili vengono definite con la struttura seguente:You define variables with the following structure:

"variables": {
    "<variable-name>": "<variable-value>",
    "<variable-name>": { 
        <variable-complex-type-value> 
    }
}

Nell'esempio seguente viene illustrato come definire una variabile creata da due valori di parametro:The following example shows how to define a variable that is constructed from two parameter values:

"variables": {
    "connectionString": "[concat('Name=', parameters('username'), ';Password=', parameters('password'))]"
}

Nell'esempio successivo viene illustrata una variabile che rappresenta un tipo JSON complesso e variabili create da altre variabili:The next example shows a variable that is a complex JSON type, and variables that are constructed from other variables:

"parameters": {
    "environmentName": {
        "type": "string",
        "allowedValues": [
          "test",
          "prod"
        ]
    }
},
"variables": {
    "environmentSettings": {
        "test": {
            "instancesSize": "Small",
            "instancesCount": 1
        },
        "prod": {
            "instancesSize": "Large",
            "instancesCount": 4
        }
    },
    "currentEnvironmentSettings": "[variables('environmentSettings')[parameters('environmentName')]]",
    "instancesSize": "[variables('currentEnvironmentSettings').instancesSize]",
    "instancesCount": "[variables('currentEnvironmentSettings').instancesCount]"
}

È possibile usare la sintassi copia per creare una variabile con una matrice di più elementi.You can use the copy syntax to create a variable with an array of multiple elements. Fornire un conteggio del numero di elementi.You provide a count for the number of elements. Ogni elemento contiene le proprietà nell'oggetto input.Each element contains the properties within the input object. È possibile usare l'istruzione copy in una variabile oppure per creare la variabile.You can use copy either within a variable or to create the variable. Entrambi gli approcci sono illustrati nell'esempio seguente:Both approaches are shown in the following example:

{
  "$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#",
  "contentVersion": "1.0.0.0",
  "parameters": {},
  "variables": {
    "disk-array-on-object": {
      "copy": [
        {
          "name": "disks",
          "count": 5,
          "input": {
            "name": "[concat('myDataDisk', copyIndex('disks', 1))]",
            "diskSizeGB": "1",
            "diskIndex": "[copyIndex('disks')]"
          }
        }
      ]
    },
    "copy": [
      {
        "name": "disks-top-level-array",
        "count": 5,
        "input": {
          "name": "[concat('myDataDisk', copyIndex('disks-top-level-array', 1))]",
          "diskSizeGB": "1",
          "diskIndex": "[copyIndex('disks-top-level-array')]"
        }
      }
    ]
  },
  "resources": [],
  "outputs": {
    "exampleObject": {
      "value": "[variables('disk-array-on-object')]",
      "type": "object"
    },
    "exampleArrayOnObject": {
      "value": "[variables('disk-array-on-object').disks]",
      "type" : "array"
    },
    "exampleArray": {
      "value": "[variables('disks-top-level-array')]",
      "type" : "array"
    }
  }
}

È anche possibile specificare più di un oggetto quando si usa la copia per creare le variabili.You can also specify more than one object when using copy to create variables. Nell'esempio seguente vengono definite due matrici come variabili.The following example defines two arrays as variables. Una è denominata disks-top-level-array e include cinque elementi.One is named disks-top-level-array and has five elements. L'altra è denominata a-different-array e include tre elementi.The other is named a-different-array and has three elements.

"variables": {
    "copy": [
        {
            "name": "disks-top-level-array",
            "count": 5,
            "input": {
                "name": "[concat('oneDataDisk', copyIndex('disks-top-level-array', 1))]",
                "diskSizeGB": "1",
                "diskIndex": "[copyIndex('disks-top-level-array')]"
            }
        },
        {
            "name": "a-different-array",
            "count": 3,
            "input": {
                "name": "[concat('twoDataDisk', copyIndex('a-different-array', 1))]",
                "diskSizeGB": "1",
                "diskIndex": "[copyIndex('a-different-array')]"
            }
        }
    ]
},

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. Questa sezione può risultare complicata perché per specificare i valori corretti è necessario conoscere i tipi da distribuire.This section can get complicated because you must understand the types you are deploying to provide the right values. Per i valori specifici della risorsa (apiVersion, tipo e proprietà) che è necessario impostare, vedere Define resources in Azure Resource Manager templates (Definire risorse nei modelli di Azure Resource Manager).For the resource-specific values (apiVersion, type, and properties) that you need to set, see Define resources in Azure Resource Manager templates.

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

"resources": [
  {
      "condition": "<boolean-value-whether-to-deploy>",
      "apiVersion": "<api-version-of-resource>",
      "type": "<resource-provider-namespace/resource-type-name>",
      "name": "<name-of-the-resource>",
      "location": "<location-of-resource>",
      "tags": {
          "<tag-name1>": "<tag-value1>",
          "<tag-name2>": "<tag-value2>"
      },
      "comments": "<your-reference-notes>",
      "copy": {
          "name": "<name-of-copy-loop>",
          "count": "<number-of-iterations>",
          "mode": "<serial-or-parallel>",
          "batchSize": "<number-to-deploy-serially>"
      },
      "dependsOn": [
          "<array-of-related-resource-names>"
      ],
      "properties": {
          "<settings-for-the-resource>",
          "copy": [
              {
                  "name": ,
                  "count": ,
                  "input": {}
              }
          ]
      },
      "resources": [
          "<array-of-child-resources>"
      ]
  }
]
Nome dell'elementoElement name ObbligatorioRequired DescrizioneDescription
conditioncondition NoNo Valore booleano che indica se la risorsa viene distribuita.Boolean value that indicates whether the resource is deployed.
apiVersionapiVersion Yes Versione dell'API REST da utilizzare per la creazione della risorsa.Version of the REST API to use for creating the resource.
typetype 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).
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 Azure che rendono visibile il nome della risorsa a terze parti convalidano anche il nome, per garantire che non si tratti di un tentativo di spoofing per un'identità alternativa.In addition, Azure services that expose the resource name to outside parties validate the name to make sure it is not an attempt to spoof another identity.
locationlocation VariabileVaries 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) do not require a location. Vedere Impostare la posizione delle risorse nei modelli di Azure Resource Manager.See Set resource location in Azure Resource Manager templates.
tagstags NoNo Tag associati alla risorsa.Tags that are associated with the resource. Vedere Applicare i tag alle risorse nei modelli di Azure Resource Manager.See Tag resources in Azure Resource Manager templates.
commenticomments NoNo Le note per documentare le risorse nel modelloYour notes for documenting the resources in your template
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 do not 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 multiple instances of resources in Azure Resource Manager.
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 are not dependent on each other, they are 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 are not 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.
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 più istanze di una proprietà.You can also specify a copy array to create multiple instances of a property. Per altre informazioni, vedere Creare più istanze di risorse in Azure Resource Manager.For more information, see Create multiple instances of resources in Azure Resource Manager.
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. Il nome di tipo completo della risorsa figlio include il tipo della risorsa padre, ad esempio Microsoft.Web/sites/extensions.The fully qualified type of the child resource includes the parent resource type, such as Microsoft.Web/sites/extensions. La dipendenza dalla risorsa padre non è implicita.Dependency on the parent resource is not implied. È necessario definirla in modo esplicito.You must explicitly define that dependency.

La sezione resources contiene una matrice delle risorse da distribuire.The resources section contains an array of the resources to deploy. All'interno di ogni risorsa è anche possibile definire una matrice di risorse figlio.Within each resource, you can also define an array of child resources. La sezione resources potrebbe quindi avere una struttura simile a questa:Therefore, your resources section could have a structure like:

"resources": [
  {
      "name": "resourceA",
  },
  {
      "name": "resourceB",
      "resources": [
        {
            "name": "firstChildResourceB",
        },
        {   
            "name": "secondChildResourceB",
        }
      ]
  },
  {
      "name": "resourceC",
  }
]

Per altre informazioni sulla definizione delle risorse figlio, vedere Impostare il nome e il tipo di una risorsa figlio in un modello di Resource Manager.For more information about defining child resources, see Set name and type for child resource in Resource Manager template.

L'elemento condition specifica se la risorsa viene distribuita.The condition element specifies whether the resource is deployed. Il valore di questo elemento restituisce true o false.The value for this element resolves to true or false. Ad esempio, per specificare se viene distribuito un nuovo account di archiviazione, usare:For example, to specify whether a new storage account is deployed, use:

{
    "condition": "[equals(parameters('newOrExisting'),'new')]",
    "type": "Microsoft.Storage/storageAccounts",
    "name": "[variables('storageAccountName')]",
    "apiVersion": "2017-06-01",
    "location": "[resourceGroup().location]",
    "sku": {
        "name": "[variables('storageAccountType')]"
    },
    "kind": "Storage",
    "properties": {}
}

Per un esempio di utilizzo di una risorsa nuova o esistente, vedere Modello di condizione nuovo o esistente.For an example of using a new or existing resource, see New or existing condition template.

Per specificare se una macchina virtuale viene distribuita con una password o una chiave SSH, definire due versioni della macchina virtuale nel modello e utilizzare condition per differenziare l'utilizzo.To specify whether a virtual machine is deployed with a password or SSH key, define two versions of the virtual machine in your template and use condition to differentiate usage. Passare un parametro che specifichi lo scenario da distribuire.Pass a parameter that specifies which scenario to deploy.

{
    "condition": "[equals(parameters('passwordOrSshKey'),'password')]",
    "apiVersion": "2016-03-30",
    "type": "Microsoft.Compute/virtualMachines",
    "name": "[concat(variables('vmName'),'password')]",
    "properties": {
        "osProfile": {
            "computerName": "[variables('vmName')]",
            "adminUsername": "[parameters('adminUsername')]",
            "adminPassword": "[parameters('adminPassword')]"
        },
        ...
    },
    ...
},
{
    "condition": "[equals(parameters('passwordOrSshKey'),'sshKey')]",
    "apiVersion": "2016-03-30",
    "type": "Microsoft.Compute/virtualMachines",
    "name": "[concat(variables('vmName'),'ssh')]",
    "properties": {
        "osProfile": {
            "linuxConfiguration": {
                "disablePasswordAuthentication": "true",
                "ssh": {
                    "publicKeys": [
                        {
                            "path": "[variables('sshKeyPath')]",
                            "keyData": "[parameters('adminSshKey')]"
                        }
                    ]
                }
            }
        },
        ...
    },
    ...
}

Per un esempio di utilizzo di una password o di una chiave SSH per la distribuzione di una macchina virtuale, vedere Modello di condizione basato su nome utente o SSH.For an example of using a password or SSH key to deploy virtual machine, see Username or SSH condition template.

OutputOutputs

Nella sezione dell'output è possibile specificare i valori restituiti dalla distribuzione.In the Outputs section, you specify values that are returned from deployment. Ad esempio, è possibile restituire l'URI per accedere a una risorsa distribuita.For example, you could return the URI to access a deployed resource.

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

"outputs": {
    "<outputName>" : {
        "type" : "<type-of-output-value>",
        "value": "<output-value-expression>"
    }
}
Nome dell'elementoElement name ObbligatorioRequired DescrizioneDescription
outputNameoutputName Yes Nome del valore di output.Name of the output value. Deve essere un identificatore JavaScript valido.Must be a valid JavaScript identifier.
typetype 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.
valuevalue Yes Espressione del linguaggio di modello valutata e restituita come valore di output.Template language expression that is evaluated and returned as output value.

L'esempio seguente illustra un valore che viene restituito nella sezione dell'output.The following example shows a value that is returned in the Outputs section.

"outputs": {
    "siteUri" : {
        "type" : "string",
        "value": "[concat('http://',reference(resourceId('Microsoft.Web/sites', parameters('siteName'))).hostNames[0])]"
    }
}

Per altre informazioni sull'utilizzo dell'output, vedere Condivisione dello stato in modelli di Azure Resource Manager.For more information about working with output, see Sharing state in Azure Resource Manager templates.

Limiti del modelloTemplate limits

Limitare le dimensioni del modello a 1 MB e ogni file di parametri a 64 KB.Limit the size of your template to 1 MB, and each parameter file to 64 KB. Il limite di 1 MB si applica allo stato finale del modello dopo che è stato espanso con le definizioni delle risorse iterative e i valori di variabili e parametri.The 1-MB limit applies to the final state of the template after it has been expanded with iterative resource definitions, and values for variables and parameters.

Si è anche limitati a:You are also limited to:

  • 256 parametri256 parameters
  • 256 variabili256 variables
  • 800 risorse (incluso il conteggio copie)800 resources (including copy count)
  • 64 valori di output64 output values
  • 24.576 caratteri in un'espressione di modello24,576 characters in a template expression

È possibile superare alcuni limiti del modello usando un modello annidato.You can exceed some template limits by using a nested template. Per altre informazioni, vedere Uso di modelli collegati nella distribuzione di risorse di Azure.For more information, see Using linked templates when deploying Azure resources. Per ridurre il numero di parametri, variabili o output, è possibile combinare più valori in un oggetto.To reduce the number of parameters, variables, or outputs, you can combine several values into an object. Per altre informazioni, vedere Oggetti come parametri.For more information, see Objects as parameters.

Passaggi successiviNext steps