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.

Questo articolo è destinato agli utenti che hanno familiarità con i modelli di Resource Manager.This article is intended for users who have some familiarity with Resource Manager templates. Fornisce informazioni dettagliate sulla struttura e la sintassi del modello.It provides detailed information about the structure and syntax of the template. Se si vuole un'introduzione alla creazione di un modello, vedere creare il primo modello di Azure Resource Manager.If you want an introduction to 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 has the following elements:

{
  "$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#",
  "contentVersion": "",
  "apiProfile": "",
  "parameters": {  },
  "variables": {  },
  "functions": [  ],
  "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.

Per le distribuzioni del gruppo di risorse, usare: https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#For resource group deployments, use: https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#

Per le distribuzioni della sottoscrizione, usare: https://schema.management.azure.com/schemas/2018-05-01/subscriptionDeploymentTemplate.json#For subscription deployments, use: https://schema.management.azure.com/schemas/2018-05-01/subscriptionDeploymentTemplate.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 No No Una versione API che funge da una raccolta di versioni dell'API per i tipi di risorse.An API version that serves as a collection of API versions for resource types. Utilizzare questo valore per evitare di dover specificare versioni dell'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 di API e non specifica una versione dell'API per il tipo di risorsa, Resource Manager usa la versione dell'API per quel tipo di risorsa che viene 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 è 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 API del profilo per assicurarsi che il modello usa 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 di profilo API corrente e le versioni di API definite nel profilo di risorse, 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 tiene traccia delle versioni tramite API profili.For more information, see Track versions using API profiles.
parametersparameters No No Valori forniti durante la distribuzione per personalizzare la distribuzione di risorse.Values that are provided when deployment is executed to customize resource deployment.
variablesvariables No No 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.
functionsfunctions No No Funzioni definite dall'utente disponibili nel modello.User-defined functions that are available within the template.
resourcesresources 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 No No 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.

SintassiSyntax

La sintassi di base del modello è JSON.The basic syntax of the template is JSON. Tuttavia, è possibile utilizzare espressioni per estendere i valori JSON disponibili all'interno del modello.However, you can use expressions to extend the JSON values available within the template. Le espressioni iniziare e terminare con parentesi quadre: [ e ], rispettivamente.Expressions start and end with 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. Un'espressione può restituire una stringa, integer, valore booleano, matrice o oggetto.An expression can return a string, integer, boolean, array, or object. Nell'esempio seguente viene illustrata un'espressione nel valore predefinito di un parametro:The following example shows an expression in the default value of a parameter:

"parameters": {
  "location": {
    "type": "string",
    "defaultValue": "[resourceGroup().location]"
  }
},

All'interno dell'espressione, la sintassi resourceGroup() chiama una delle funzioni disponibili in Gestione risorse per l'uso all'interno di un modello.Within the expression, the syntax resourceGroup() calls one of the functions that Resource Manager provides for use within a template. 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). La sintassi .location recupera una proprietà dall'oggetto restituito dalla funzione.The syntax .location retrieves one property from the object returned by that function.

Le funzioni del modello e i relativi parametri non hanno la distinzione tra maiuscole e minuscole.Template functions and their parameters are case-insensitive. Ad esempio, Gestione risorse consente di risolvere allo stesso modo le variables('var1') e le VARIABLES('VAR1').For example, Resource Manager resolves variables('var1') and VARIABLES('VAR1') as the same. Durante la valutazione, la funzione mantiene invariato l'uso delle maiuscole/minuscole, a meno che queste non vengano modificate espressamente dalla funzione, ad esempio toUpper o toLower.When evaluated, unless the function expressly modifies case (such as toUpper or toLower), the function preserves the case. Alcuni tipi di risorse possono avere requisiti per le maiuscole e minuscole indipendentemente dalla modalità di valutazione delle funzioni.Certain resource types may have case requirements irrespective of how functions are evaluated.

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 [[.

Per passare un valore stringa come parametro a una funzione, usare le virgolette singole.To pass a string value as a parameter to a function, use single quotes.

"name": "[concat('storage', uniqueString(resourceGroup().id))]"

Per eseguire l'escape di virgolette doppie in un'espressione, ad esempio l'aggiunta di un oggetto JSON nel modello, usare la barra rovesciata.To escape double quotes in an expression, such as adding a JSON object in the template, use the backslash.

"tags": {
    "CostCenter": "{\"Dept\":\"Finance\",\"Environment\":\"Production\"}"
},

Un'espressione del modello non può superare i 24.576 caratteri.A template expression can't exceed 24,576 characters.

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.

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. 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 parametri nel modello, ma senza di essi il modello distribuisce sempre le stesse risorse con lo stesso nome, la stessa posizione e le stesse proprietà.You don't 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.

È previsto un limite di 256 parametri in un modello.You're limited to 256 parameters in a template. Il numero di parametri può essere ridotto usando oggetti che contengono più proprietà, come illustrato in questo articolo.You can reduce the number of parameters by using objects that contain multiple properties, as shown in this article.

Proprietà disponibiliAvailable 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 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. 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.
defaultValuedefaultValue No No 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 No No 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 No No Il valore minimo per i parametri di tipo int, questo valore è inclusivo.The minimum value for int type parameters, this value is inclusive.
maxValuemaxValue No No Il valore massimo per i parametri di tipo int, questo valore è inclusivo.The maximum value for int type parameters, this value is inclusive.
minLengthminLength No No 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 No No 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 No No 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.

Definire e usare un parametroDefine and use a parameter

L'esempio seguente illustra la definizione di un parametro semplice.The following example shows a simple parameter definition. Definisce il nome del parametro e specifica che accetta un valore stringa.It defines the name of the parameter, and specifies that it takes a string value. Il parametro accetta solo valori significativi per l'uso previsto.The parameter only accepts values that make sense for its intended use. Specifica un valore predefinito quando durante la distribuzione non viene fornito alcun valore.It specifies a default value when no value is provided during deployment. Infine, il parametro include una descrizione del relativo uso.Finally, the parameter includes a description of its use.

"parameters": {
  "storageSKU": {
    "type": "string",
    "allowedValues": [
      "Standard_LRS",
      "Standard_ZRS",
      "Standard_GRS",
      "Standard_RAGRS",
      "Premium_LRS"
    ],
    "defaultValue": "Standard_LRS",
    "metadata": {
      "description": "The type of replication to use for the storage account."
    }
  }   
}

Nel modello si fa riferimento al valore per il parametro con la sintassi seguente:In the template, you reference the value for the parameter with the following syntax:

"resources": [
  {
    "type": "Microsoft.Storage/storageAccounts",
    "sku": {
      "name": "[parameters('storageSKU')]"
    },
    ...
  }
]

Funzioni di modello con parametriTemplate functions with parameters

Quando si specifica il valore predefinito per un parametro, è possibile usare la maggior parte delle funzioni del modello.When specifying the default value for a parameter, you can use most template functions. Si può usare il valore di un altro parametro per generare un valore predefinito.You can use another parameter value to build a default value. Il modello seguente illustra l'uso delle funzioni nel valore predefinito:The following template demonstrates the use of functions in the default value:

"parameters": {
  "siteName": {
    "type": "string",
    "defaultValue": "[concat('site', uniqueString(resourceGroup().id))]",
    "metadata": {
      "description": "The site name. To use the default value, do not specify a new value."
    }
  },
  "hostingPlanName": {
    "type": "string",
    "defaultValue": "[concat(parameters('siteName'),'-plan')]",
    "metadata": {
      "description": "The host name. To use the default value, do not specify a new value."
    }
  }
}

Non è possibile usare la funzione reference nella sezione dei parametri.You can't use the reference function in the parameters section. I parametri vengono valutati prima della distribuzione, quindi la funzione reference non può ottenere lo stato di runtime di una risorsa.Parameters are evaluated before deployment so the reference function can't get the runtime state of a resource.

Oggetti come parametriObjects as parameters

Può essere più semplice organizzare i valori correlati passandoli come oggetto.It can be easier to organize related values by passing them in as an object. Questo approccio riduce anche il numero di parametri nel modello.This approach also reduces the number of parameters in the template.

Definire il parametro nel modello e specificare un oggetto JSON invece di un solo valore durante la distribuzione.Define the parameter in your template and specify a JSON object instead of a single value during deployment.

"parameters": {
  "VNetSettings": {
    "type": "object",
    "defaultValue": {
      "name": "VNet1",
      "location": "eastus",
      "addressPrefixes": [
        {
          "name": "firstPrefix",
          "addressPrefix": "10.0.0.0/22"
        }
      ],
      "subnets": [
        {
          "name": "firstSubnet",
          "addressPrefix": "10.0.0.0/24"
        },
        {
          "name": "secondSubnet",
          "addressPrefix": "10.0.1.0/24"
        }
      ]
    }
  }
},

Quindi, fare riferimento alle sottoproprietà del parametro usando l'operatore punto.Then, reference the subproperties of the parameter by using the dot operator.

"resources": [
  {
    "apiVersion": "2015-06-15",
    "type": "Microsoft.Network/virtualNetworks",
    "name": "[parameters('VNetSettings').name]",
    "location": "[parameters('VNetSettings').location]",
    "properties": {
      "addressSpace":{
        "addressPrefixes": [
          "[parameters('VNetSettings').addressPrefixes[0].addressPrefix]"
        ]
      },
      "subnets":[
        {
          "name":"[parameters('VNetSettings').subnets[0].name]",
          "properties": {
            "addressPrefix": "[parameters('VNetSettings').subnets[0].addressPrefix]"
          }
        },
        {
          "name":"[parameters('VNetSettings').subnets[1].name]",
          "properties": {
            "addressPrefix": "[parameters('VNetSettings').subnets[1].addressPrefix]"
          }
        }
      ]
    }
  }
]

Modelli di esempio di parametroParameter example templates

Questi modelli di esempio illustrano alcuni scenari per l'uso dei parametri.These example templates demonstrate some scenarios for using parameters. Distribuirli per testare il modo in cui i parametri vengono gestiti in scenari diversi.Deploy them to test how parameters are handled in different scenarios.

ModelloTemplate DESCRIZIONEDescription
parametri con funzioni per i valori predefinitiparameters with functions for default values Illustra come usare le funzioni di modello quando si definiscono valori predefiniti per i parametri.Demonstrates how to use template functions when defining default values for parameters. Il modello non distribuisce alcuna risorsa.The template doesn't deploy any resources. Crea valori di parametro e restituisce questi valori.It constructs parameter values and returns those values.
oggetto parametroparameter object Illustra l'uso di un oggetto per un parametro.Demonstrates using an object for a parameter. Il modello non distribuisce alcuna risorsa.The template doesn't deploy any resources. Crea valori di parametro e restituisce questi valori.It constructs parameter values and returns those values.

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.

Definizioni disponibiliAvailable definitions

Nell'esempio seguente mostra 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 per creare valori diversi per una variabile, vedere iterazione delle variabili.For information about using copy to create several values for a variable, see Variable iteration.

Definire e usare una variabileDefine and use a variable

L'esempio seguente illustra la definizione di una variabile:The following example shows a variable definition. Crea un valore stringa per il nome di un account di archiviazione.It creates a string value for a storage account name. Usa diverse funzioni di modello per ottenere un valore di parametro e si concatena a una stringa univoca.It uses several template functions to get a parameter value, and concatenates it to a unique string.

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

La variabile viene usata quando si definisce la risorsa.You use the variable when defining the resource.

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

Variabili di configurazioneConfiguration variables

È possibile usare i tipi JSON complessi per definire i valori associati a un ambiente.You can use complex JSON types to define related values for an environment.

"variables": {
  "environmentSettings": {
    "test": {
      "instanceSize": "Small",
      "instanceCount": 1
    },
    "prod": {
      "instanceSize": "Large",
      "instanceCount": 4
    }
  }
},

Nei parametri, creare un valore che indichi i valori di configurazione da usare.In parameters, you create a value that indicates which configuration values to use.

"parameters": {
  "environmentName": {
    "type": "string",
    "allowedValues": [
      "test",
      "prod"
    ]
  }
},

Recuperare le impostazioni correnti con:You retrieve the current settings with:

"[variables('environmentSettings')[parameters('environmentName')].instanceSize]"

Modelli di esempio di variabileVariable example templates

Questi modelli di esempio illustrano alcuni scenari per l'uso delle variabili.These example templates demonstrate some scenarios for using variables. Distribuirli per testare il modo in cui le variabili vengono gestite in scenari diversi.Deploy them to test how variables are handled in different scenarios.

ModelloTemplate DESCRIZIONEDescription
definizioni delle variabilivariable definitions Illustra i diversi tipi di variabili.Demonstrates the different types of variables. Il modello non distribuisce alcuna risorsa.The template doesn't deploy any resources. Crea e restituisce valori variabili.It constructs variable values and returns those values.
variabile di configurazioneconfiguration variable Illustra l'uso di una variabile che definisce i valori di configurazione.Demonstrates the use of a variable that defines configuration values. Il modello non distribuisce alcuna risorsa.The template doesn't deploy any resources. Crea e restituisce valori variabili.It constructs variable values and returns those values.
regole di sicurezza della rete e file dei parametrinetwork security rules and parameter file Crea una matrice nel formato corretto per assegnare le regole di sicurezza a un gruppo di sicurezza della rete.Constructs an array in the correct format for assigning security rules to a network security group.

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. Si definiscono in genere espressioni complesse che non si vogliono ripetere in tutto il modello.Typically, you define complicated expression 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 all'interno di una funzione definita dall'utente, è limitato ai parametri per tale 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.

Le funzioni richiedono che sia definito un valore dello spazio dei nomi per evitare conflitti di denominazione con le funzioni del modello.Your functions require a namespace value to avoid naming conflicts with template functions. L'esempio illustrata una funzione che restituisce un nome di account di archiviazione:The following example shows a function that returns a storage account name:

"functions": [
  {
    "namespace": "contoso",
    "members": {
      "uniqueName": {
        "parameters": [
          {
            "name": "namePrefix",
            "type": "string"
          }
        ],
        "output": {
          "type": "string",
          "value": "[concat(toLower(parameters('namePrefix')), uniqueString(resourceGroup().id))]"
        }
      }
    }
  }
],

La funzione viene chiamata con:You call the function with:

"resources": [
  {
    "name": "[contoso.uniqueName(parameters('storageNamePrefix'))]",
    "type": "Microsoft.Storage/storageAccounts",
    "apiVersion": "2016-01-01",
    "sku": {
      "name": "Standard_LRS"
    },
    "kind": "Storage",
    "location": "South Central US",
    "tags": {},
    "properties": {}
  }
]

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.

Proprietà disponibiliAvailable properties

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

"resources": [
  {
      "condition": "<true-to-deploy-this-resource>",
      "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": {}
              }
          ]
      },
      "sku": {
          "name": "<sku-name>",
          "tier": "<sku-tier>",
          "size": "<sku-size>",
          "family": "<sku-family>",
          "capacity": <sku-capacity>
      },
      "kind": "<type-of-resource>",
      "plan": {
          "name": "<plan-name>",
          "promotionCode": "<plan-promotion-code>",
          "publisher": "<plan-publisher>",
          "product": "<plan-product>",
          "version": "<plan-version>"
      },
      "resources": [
          "<array-of-child-resources>"
      ]
  }
]
Nome dell'elementoElement name ObbligatorioRequired DESCRIZIONEDescription
conditioncondition No No 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. Visualizzare condizione.See condition.
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 a un modello.To determine available values, see template reference.
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). Per determinare i valori disponibili, vedere riferimento a un modello.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 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 isn't 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) don't require a location.
tagstags No No 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.
commenticomments No No Le note per documentare le risorse nel modello.Your notes for documenting the resources in your template. Per altre informazioni, consultare la sezione Commenti in template.For more information, see Comments in templates.
copycopy No No 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.
dependsOndependsOn No No 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.
propertiesproperties No No 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 a un modello.To determine available values, see template reference.
skusku No No 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 No No 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.
pianoplan No No 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.
resourcesresources No No 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 isn't implied. È necessario definirla in modo esplicito.You must explicitly define that dependency.

CondizioneCondition

Quando durante la distribuzione occorre decidere se creare o meno una risorsa, usare l'elemento condition.When you must decide during deployment whether or not to create a resource, use the condition element. Il valore di questo elemento restituisce true o false.The value for this element resolves to true or false. Quando il valore è true, la risorsa viene creata.When the value is true, the resource is created. Quando il valore è false, la risorsa non viene creata.When the value is false, the resource isn't created. Il valore può essere applicato solo all'intera risorsa.The value can only be applied to the whole resource.

In genere, si usa questo valore quando si vuole creare una nuova risorsa o usarne una esistente.Typically, you use this value when you want to create a new resource or use an existing one. Per indicare, ad esempio, se viene distribuito un nuovo account di archiviazione o se ne viene usato uno esistente, specificare:For example, to specify whether a new storage account is deployed or an existing storage account is used, 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 modello di esempio completo che usa l'elemento condition, vedere Macchina virtuale con una Rete virtuale nuova o esistente, archiviazione e indirizzo IP pubblico.For a complete example template that uses the condition element, see VM with a new or existing Virtual Network, Storage, and Public IP.

Se si usa un' riferimento oppure elenco funzione con una risorsa che viene distribuita in modo condizionale, la funzione viene valutata anche se la risorsa non è stata distribuita.If you use a reference or list function with a resource that is conditionally deployed, the function is evaluated even if the resource isn't deployed. Si verifica un errore se la funzione fa riferimento a una risorsa che non esiste.You get an error if the function refers to a resource that doesn't exist. Usare la se funzione per assicurarsi che la funzione viene valutata solo per le condizioni quando la risorsa viene distribuita.Use the if function to make sure the function is only evaluated for conditions when the resource is deployed. Vedere le se funzione per un modello di esempio che usa se e riferimento a una risorsa distribuita in modo condizionale.See the if function for a sample template that uses if and reference with a conditionally deployed resource.

Nomi di risorseResource names

In genere vengono usati tre tipi di nomi di risorse in Resource Manager:Generally, you work with three types of resource names in Resource Manager:

  • Nomi di risorse che devono essere univoci.Resource names that must be unique.
  • Nomi di risorse che non devono necessariamente essere univoci, ma che si desidera rendano possibile l'identificazione di una risorsa.Resource names that aren't required to be unique, but you choose to provide a name that can help you identify the resource.
  • Nomi di risorse che possono essere generici.Resource names that can be generic.

Fornire una nome della risorsa univoco per qualsiasi tipo di risorsa che ha un endpoint di accesso dati.Provide a unique resource name for any resource type that has a data access endpoint. Alcuni tipi di risorse comuni che richiedono un nome univoco includono:Some common resource types that require a unique name include:

  • Archiviazione di Azure1Azure Storage1
  • Funzionalità app Web del servizio app di AzureWeb Apps feature of Azure App Service
  • SQL ServerSQL Server
  • Azure Key VaultAzure Key Vault
  • Cache Redis di AzureAzure Cache for Redis
  • Azure BatchAzure Batch
  • Gestione traffico di AzureAzure Traffic Manager
  • Ricerca di AzureAzure Search
  • HDInsight di AzureAzure HDInsight

1 I nomi di account di archiviazione devono essere formati da lettere minuscole, un massimo di 24 caratteri e non devono includere alcun segno meno.1 Storage account names also must be lowercase, 24 characters or less, and not have any hyphens.

Quando si imposta il nome, è possibile creare manualmente un nome univoco o usare la funzione uniqueString() per generare un nome.When setting the name, you can either manually create a unique name or use the uniqueString() function to generate a name. È spesso opportuno aggiungere un prefisso o un suffisso al risultato di uniqueString.You also might want to add a prefix or suffix to the uniqueString result. La modifica del nome univoco consente di identificare più facilmente il tipo di risorsa in base al nome.Modifying the unique name can help you more easily identify the resource type from the name. Ad esempio, è possibile generare un nome univoco per un account di archiviazione usando la variabile seguente:For example, you can generate a unique name for a storage account by using the following variable:

"variables": {
  "storageAccountName": "[concat(uniqueString(resourceGroup().id),'storage')]"
}

Per alcuni tipi di risorse, si potrebbe voler fornire una nome per l'identificazione, ma il nome non deve essere univoco.For some resource types, you might want to provide a name for identification, but the name doesn't have to be unique. Per questi tipi di risorse, specificare un nome che descrive lo utilizzo o le caratteristiche.For these resource types, provide a name that describes it use or characteristics.

"parameters": {
  "vmName": { 
    "type": "string",
    "defaultValue": "demoLinuxVM",
    "metadata": {
      "description": "The name of the VM to create."
    }
  }
}

Per tipi di risorse, che si soprattutto l'accesso tramite un'altra risorsa, è possibile usare una nome generico che sia hardcoded nel modello.For resource types that you mostly access through a different resource, you can use a generic name that is hard-coded in the template. Ad esempio, è possibile impostare un nome generico e standard per le regole del firewall in SQL server:For example, you can set a standard, generic name for firewall rules on a SQL server:

{
  "type": "firewallrules",
  "name": "AllowAllWindowsAzureIps",
  ...
}

Percorso risorsaResource location

Quando si distribuisce un modello, è necessario fornire la posizione per ogni risorsa.When deploying a template, you must provide a location for each resource. Diversi tipi di risorse sono supportati in posizioni diverse.Different resource types are supported in different locations. Per conoscere le posizioni supportate per un tipo di risorsa, consultare Provider e tipi di risorse di Azure.To get the supported locations for a resource type, see Azure resource providers and types.

Usare un parametro per specificare la posizione delle risorse e impostare il valore predefinito su resourceGroup().location.Use a parameter to specify the location for resources, and set the default value to resourceGroup().location.

L'esempio seguente illustra un account di archiviazione che viene distribuito in una posizione specificata come parametro:The following example shows a storage account that is deployed to a location specified as a parameter:

{
  "$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#",
  "contentVersion": "1.0.0.0",
  "parameters": {
    "storageAccountType": {
      "type": "string",
      "defaultValue": "Standard_LRS",
      "allowedValues": [
        "Standard_LRS",
        "Standard_GRS",
        "Standard_ZRS",
        "Premium_LRS"
      ],
      "metadata": {
        "description": "Storage Account type"
      }
    },
    "location": {
      "type": "string",
      "defaultValue": "[resourceGroup().location]",
      "metadata": {
        "description": "Location for all resources."
      }
    }
  },
  "variables": {
    "storageAccountName": "[concat('storage', uniquestring(resourceGroup().id))]"
  },
  "resources": [
    {
      "type": "Microsoft.Storage/storageAccounts",
      "name": "[variables('storageAccountName')]",
      "location": "[parameters('location')]",
      "apiVersion": "2018-07-01",
      "sku": {
        "name": "[parameters('storageAccountType')]"
      },
      "kind": "StorageV2",
      "properties": {}
    }
  ],
  "outputs": {
    "storageAccountName": {
      "type": "string",
      "value": "[variables('storageAccountName')]"
    }
  }
}

Risorse figlioChild resources

All'interno di alcuni tipi di risorsa è anche possibile definire una matrice di risorse figlio.Within some resource types, you can also define an array of child resources. Le risorse figlio sono risorse presenti solo all'interno del contesto di un'altra risorsa.Child resources are resources that only exist within the context of another resource. Ad esempio, un database SQL non può esistere senza un server SQL, pertanto il database è un figlio del server.For example, a SQL database can't exist without a SQL server so the database is a child of the server. È possibile definire il database all'interno della definizione per il server.You can define the database within the definition for the server.

{
  "name": "exampleserver",
  "type": "Microsoft.Sql/servers",
  "apiVersion": "2014-04-01",
  ...
  "resources": [
    {
      "name": "exampledatabase",
      "type": "databases",
      "apiVersion": "2014-04-01",
      ...
    }
  ]
}

Quando annidata, il tipo è impostato su databases, ma il tipo di risorsa completo è Microsoft.Sql/servers/databases.When nested, the type is set to databases but its full resource type is Microsoft.Sql/servers/databases. Non si specifica Microsoft.Sql/servers/ perché viene ottenuto dal tipo della risorsa padre.You don't provide Microsoft.Sql/servers/ because it's assumed from the parent resource type. Il nome della risorsa figlio è impostato su exampledatabase, ma il nome completo include il nome della risorsa padre.The child resource name is set to exampledatabase but the full name includes the parent name. Non si specifica exampleserver perché viene ottenuto dalla risorsa padre.You don't provide exampleserver because it's assumed from the parent resource.

Il formato del tipo della risorsa figlio è: {resource-provider-namespace}/{parent-resource-type}/{child-resource-type}The format of the child resource type is: {resource-provider-namespace}/{parent-resource-type}/{child-resource-type}

Il formato del nome della risorsa figlio è: {parent-resource-name}/{child-resource-name}The format of the child resource name is: {parent-resource-name}/{child-resource-name}

Tuttavia, non è necessario definire il database all'interno del server.But, you don't have to define the database within the server. È possibile definire la risorsa figlio al primo livello.You can define the child resource at the top level. Questo approccio potrebbe essere usato se la risorsa padre non viene distribuita nello stesso modello o se si vuole usare copy per creare più di una risorsa figlio.You might use this approach if the parent resource isn't deployed in the same template, or if want to use copy to create more than one child resource. Con questo approccio, è necessario specificare il tipo di risorsa completo e includere il nome della risorsa padre nel nome della risorsa figlio.With this approach, you must provide the full resource type, and include the parent resource name in the child resource name.

{
  "name": "exampleserver",
  "type": "Microsoft.Sql/servers",
  "apiVersion": "2014-04-01",
  "resources": [ 
  ],
  ...
},
{
  "name": "exampleserver/exampledatabase",
  "type": "Microsoft.Sql/servers/databases",
  "apiVersion": "2014-04-01",
  ...
}

Quando si crea un riferimento completo a una risorsa, l'ordine di combinazione dei segmenti dal tipo e dal nome non è semplicemente una concatenazione dei due elementi.When constructing a fully qualified reference to a resource, the order to combine segments from the type and name isn't simply a concatenation of the two. Dopo lo spazio dei nomi, usare invece una sequenza di coppie tipo/nome dal meno specifico al più specifico:Instead, after the namespace, use a sequence of type/name pairs from least specific to most specific:

{resource-provider-namespace}/{parent-resource-type}/{parent-resource-name}[/{child-resource-type}/{child-resource-name}]*

Ad esempio: For example:

Microsoft.Compute/virtualMachines/myVM/extensions/myExt è corretto Microsoft.Compute/virtualMachines/extensions/myVM/myExt non è correttoMicrosoft.Compute/virtualMachines/myVM/extensions/myExt is correct Microsoft.Compute/virtualMachines/extensions/myVM/myExt is not correct

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, per restituire valori dalle risorse distribuite.Typically, you return values from resources that were deployed.

Proprietà disponibiliAvailable properties

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

"outputs": {
  "<outputName>" : {
    "condition": "<boolean-value-whether-to-output-value>",
    "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.
conditioncondition No No 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.
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.

Definire e usare i valori di outputDefine and use output values

L'esempio seguente illustra come restituire l'ID risorsa per un indirizzo IP pubblico:The following example shows how to return the resource ID for a public IP address:

"outputs": {
  "resourceID": {
    "type": "string",
    "value": "[resourceId('Microsoft.Network/publicIPAddresses', parameters('publicIPAddresses_name'))]"
  }
}

L'esempio seguente mostra come restituire in modo condizionale l'ID risorsa per un indirizzo IP pubblico in base al fatto che ne sia stato distribuito uno nuovo:The next example shows how to conditionally return the resource ID for a public IP address based on whether a new one was deployed:

"outputs": {
  "resourceID": {
    "condition": "[equals(parameters('publicIpNewOrExisting'), 'new')]",
    "type": "string",
    "value": "[resourceId('Microsoft.Network/publicIPAddresses', parameters('publicIPAddresses_name'))]"
  }
}

Per un semplice esempio dell'output condizionale, vedere modello di output condizionale.For a simple example of conditional output, see conditional output template.

Dopo la distribuzione, è possibile recuperare il valore con uno script.After the deployment, you can retrieve the value with script. Per PowerShell, usare:For PowerShell, use:

(Get-AzResourceGroupDeployment -ResourceGroupName <resource-group-name> -Name <deployment-name>).Outputs.resourceID.value

Per l'interfaccia della riga di comando di Azure usare:For Azure CLI, use:

az group deployment show -g <resource-group-name> -n <deployment-name> --query properties.outputs.resourceID.value

È possibile recuperare il valore di output da un modello collegato usando la funzione reference.You can retrieve the output value from a linked template by using the reference function. Per ottenere un valore di output da un modello collegato, recuperare il valore della proprietà con una sintassi analoga a: "[reference('deploymentName').outputs.propertyName.value]".To get an output value from a linked template, retrieve the property value with syntax like: "[reference('deploymentName').outputs.propertyName.value]".

Quando si ottiene una proprietà di output da un modello collegato, il nome della proprietà non può includere un trattino.When getting an output property from a linked template, the property name can't include a dash.

Nell'esempio seguente viene illustrato come impostare l'indirizzo IP in un servizio di bilanciamento del carico recuperando il valore da un modello collegato.The following example shows how to set the IP address on a load balancer by retrieving a value from a linked template.

"publicIPAddress": {
  "id": "[reference('linkedTemplate').outputs.resourceID.value]"
}

Non è possibile usare la funzione reference nella sezione outputs di un modello annidato.You can't use the reference function in the outputs section of a nested template. Per restituire i valori per una risorsa distribuita in un modello annidato, convertire il modello annidato in un modello collegato.To return the values for a deployed resource in a nested template, convert your nested template to a linked template.

Modelli di esempio di outputOutput example templates

ModelloTemplate DESCRIZIONEDescription
Copia variabiliCopy variables Crea variabili complesse e restituisce i valori.Creates complex variables and outputs those values. Non distribuisce alcuna risorsa.Doesn't deploy any resources.
Indirizzo IP pubblicoPublic IP address Crea un indirizzo IP pubblico e restituisce l'ID risorsa.Creates a public IP address and outputs the resource ID.
Bilanciamento del caricoLoad balancer È collegato al modello precedente.Links to the preceding template. Usa l'ID risorsa nell'output durante la creazione del dispositivo di bilanciamento del carico.Uses the resource ID in the output when creating the load balancer.

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.

È 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/2015-01-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": [
  {
    "comments": "Storage account used to store VM disks",
    "apiVersion": "2018-07-01",
    "type": "Microsoft.Storage/storageAccounts",
    "name": "[concat('storage', uniqueString(resourceGroup().id))]",
    "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.

Per i commenti inline, è possibile usare //, ma questa sintassi non funziona con tutti gli strumenti.For inline comments, you can use // but this syntax doesn't work with all tools. Non è possibile usare l'interfaccia della riga di comando di Azure per distribuire il modello con commenti inline.You can't use Azure CLI to deploy the template with inline comments. Inoltre, non è possibile usare l'editor dei modelli del portale per operare sui modelli con commenti inline.And, you can't use the portal template editor to work on templates with inline comments. 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.

{
  "type": "Microsoft.Compute/virtualMachines",
  "name": "[variables('vmName')]", // to customize name, change it in variables
  "location": "[parameters('location')]", //defaults to resource group location
  "apiVersion": "2018-10-01",
  "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 è possibile impostare la modalità linguaggio su JSON con commenti.In VS Code, you can set the language mode to JSON with comments. In questo modo i commenti inline non verranno più contrassegnati come non validi.The inline comments are no longer marked as invalid. Per modificare la modalità:To change the mode:

  1. Aprire la finestra di selezione della modalità linguaggio (CTRL+K M).Open language mode selection (Ctrl+K M)

  2. Selezionare JSON with Comments (JSON con commenti).Select JSON with Comments.

    Selezionare la modalità linguaggio

Guide introduttive ed esercitazioniQuickstarts and tutorials

Usare le seguenti guide introduttive ed esercitazioni per imparare a sviluppare modelli di gestione risorse:Use the following quickstarts and tutorials to learn how to develop resource manager templates:

  • Guide introduttiveQuickstarts

    TitleTitle DESCRIZIONEDescription
    Usare il portale di AzureUse the Azure portal Generare un modello usando il portale e comprendere il processo di modifica e distribuzione del modello.Generate a template using the portal, and understand the process of editing and deploying the template.
    Usare Visual Studio CodeUse Visual Studio Code Usare Visual Studio Code per creare e modificare modelli e come usare Azure Cloud Shell per distribuire i modelli.Use Visual Studio Code to create and edit templates, and how to use the Azure Cloud shell to deploy templates.
    Usare Visual StudioUse Visual Studio Usare Visual Studio per creare, modificare e distribuire modelli.Use Visual Studio to create, edit, and deploy templates.
  • EsercitazioniTutorials

    TitleTitle DESCRIZIONEDescription
    Utilizzare il riferimento del modelloUtilize template reference Utilizzare la documentazione di riferimento dei modelli per lo sviluppo di modelli.Utilize the template reference documentation to develop templates. Nell'esercitazione, trovare lo schema dell'account di archiviazione e usare le informazioni per creare un account di archiviazione crittografato.In the tutorial, you find the storage account schema, and use the information to create an encrypted storage account.
    Creare più istanzeCreate multiple instances Creare più istanze di risorse di Azure.Create multiple instances of Azure resources. Nell'esercitazione si creeranno più istanze dell'account di archiviazione.In the tutorial, you create multiple instances of storage account.
    Impostare l'ordine di distribuzione delle risorseSet resource deployment order Definire le dipendenze delle risorse.Define resource dependencies. Nell'esercitazione, verranno create una rete virtuale, una macchina virtuale e le risorse di Azure dipendenti.In the tutorial, you create a virtual network, a virtual machine, and the dependent Azure resources. Si apprenderà come vengono definite le dipendenze.You learn how the dependencies are defined.
    Usare le condizioniUse conditions Distribuire le risorse basate su alcuni valori di parametro.Deploy resources based on some parameter values. Nell'esercitazione, si definisce un modello per creare un nuovo account di archiviazione oppure usarne uno esistente in base al valore di un parametro.In the tutorial, you define a template to create a new storage account or use an existing storage account based on the value of a parameter.
    Integrare Key VaultIntegrate key vault Recuperare i segreti/le password di Azure Key Vault.Retrieve secrets/passwords from Azure Key Vault. Nell'esercitazione, verrà creata una macchina virtuale.In the tutorial, you create a virtual machine. La password amministratore della macchina virtuale viene recuperata da un Key Vault.The virtual machine administrator password is retrieved from a Key Vault.
    Creare modelli collegatiCreate linked templates Modularizzare i modelli e chiamare altri modelli da un modello.Modularize templates, and call other templates from a template. Nell'esercitazione, verranno create una rete virtuale, una macchina virtuale e le risorse dipendenti.In the tutorial, you create a virtual network, a virtual machine, and the dependent resources. L'account di archiviazione dipendente è definito in un modello collegato.The dependent storage account is defined in a linked template.
    Distribuire estensioni di macchina virtualeDeploy virtual machine extensions Eseguire le attività successive alla distribuzione usando le estensioni.Perform post-deployment tasks by using extensions. Nell'esercitazione viene distribuita un'estensione di script personalizzata per installare un server Web nella macchina virtuale.In the tutorial, you deploy a customer script extension to install web server on the virtual machine.
    Distribuire estensioni SQLDeploy SQL extensions Eseguire le attività successive alla distribuzione usando le estensioni.Perform post-deployment tasks by using extensions. Nell'esercitazione viene distribuita un'estensione di script personalizzata per installare un server Web nella macchina virtuale.In the tutorial, you deploy a customer script extension to install web server on the virtual machine.
    Proteggere gli artefattiSecure artifacts Proteggere gli artefatti necessari per completare le distribuzioni.Secure the artifacts needed to complete the deployments. L'esercitazione descrive come proteggere gli artefatti usati nell'esercitazione Distribuire estensioni SQL.In the tutorial, you learn how to secure the artifact used in the Deploy SQL extensions tutorial.
    Usare procedure di distribuzione sicureUse safe deployment practices Usare Azure Deployment Manager.Use Azure Deployment manager.
    Esercitazione: Risolvere i problemi delle distribuzioni dei modelli di Resource ManagerTutorial: Troubleshoot Resource Manager template deployments Risoluzione dei problemi relativi alla distribuzione di modelli.Troubleshoot template deployment issues.

Queste esercitazioni possono essere usate singolarmente o in serie per apprendere i principali concetti di sviluppo del modello di Resource Manager.These tutorials can be used individually, or as a series to learn the major Resource Manager template development concepts.

Passaggi successiviNext steps