Förstå strukturen och syntaxen för Azure Resource Manager-mallarUnderstand the structure and syntax of Azure Resource Manager templates

Den här artikeln beskriver strukturen för en Azure Resource Manager-mall.This article describes the structure of an Azure Resource Manager template. Den anger de olika avsnitten i en mall och egenskaperna som är tillgängliga i dessa avsnitt.It presents the different sections of a template and the properties that are available in those sections. Mallen består av JSON och uttryck som du kan använda för att skapa värden för din distribution.The template consists of JSON and expressions that you can use to construct values for your deployment.

Den här artikeln är avsedd för användare som har bekant med Resource Manager-mallar.This article is intended for users who have some familiarity with Resource Manager templates. Den innehåller detaljerad information om strukturen och syntaxen för mallen.It provides detailed information about the structure and syntax of the template. Om du vill att en introduktion till hur du skapar en mall finns i skapa din första Azure Resource Manager-mall.If you want an introduction to creating a template, see Create your first Azure Resource Manager template.

MallformatTemplate format

I sin enklaste struktur har en mall följande element: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": {  }
}
ElementnamnElement name KrävsRequired BeskrivningDescription
$schema$schema JaYes Platsen för schemat JSON-fil som beskriver versionen av mallspråk.Location of the JSON schema file that describes the version of the template language.

För distribution av resursgrupper, använder du: 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#

För prenumerationsdistributioner av, använder du: 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 JaYes Versionen av mallen (till exempel 1.0.0.0).Version of the template (such as 1.0.0.0). Du kan ange ett värde för det här elementet.You can provide any value for this element. Använd det här värdet till dokumentet betydande förändringar i mallen.Use this value to document significant changes in your template. Det här värdet kan användas för att se till att rätt mall används när du distribuerar resurser med hjälp av mallen.When deploying resources using the template, this value can be used to make sure that the right template is being used.
apiProfileapiProfile NejNo En API-version som fungerar som en uppsättning API-versioner för resurstyper.An API version that serves as a collection of API versions for resource types. Använd det här värdet för att undvika att behöva ange API-versioner för varje resurs i mallen.Use this value to avoid having to specify API versions for each resource in the template. När du anger en profil för API-version och inte anger en API-version för resurstypen använder Resource Manager API-versionen för den resurstyp som definieras i profilen.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.

API-profilegenskapen är särskilt användbart när du distribuerar en mall till olika miljöer, till exempel Azure Stack och globala Azure.The API profile property is especially helpful when deploying a template to different environments, such as Azure Stack and global Azure. Använda profilversionen API för att kontrollera att mallen använder automatiskt de versioner som stöds i båda miljöerna.Use the API profile version to make sure your template automatically uses versions that are supported in both environments. En lista över de aktuella versionerna av API-profilen och resurserna som API-versioner som anges i profilen för finns i API profil.For a list of the current API profile versions and the resources API versions defined in the profile, see API Profile.

Mer information finns i spåra versioner med hjälp av API-profiler.For more information, see Track versions using API profiles.
parametersparameters NejNo Värden som tillhandahålls när distributionen körs för att anpassa resursdistributionen.Values that are provided when deployment is executed to customize resource deployment.
Variablervariables NejNo Värden som används som JSON-fragment i mallen för att förenkla mallspråksuttryck.Values that are used as JSON fragments in the template to simplify template language expressions.
Funktionerfunctions NejNo Användardefinierade funktioner som är tillgängliga i mallen.User-defined functions that are available within the template.
Resurserresources JaYes Resurstyper som är distribuerade eller uppdateras i en resursgrupp eller prenumeration.Resource types that are deployed or updated in a resource group or subscription.
utdataoutputs NejNo Värden som returneras efter distributionen.Values that are returned after deployment.

Varje element har egenskaper som du kan ange.Each element has properties you can set. Den här artikeln beskriver avsnitt i mallen i större detalj.This article describes the sections of the template in greater detail.

SyntaxSyntax

Grundläggande syntaxen för mallen är JSON.The basic syntax of the template is JSON. Du kan dock använda uttryck för att utöka de JSON-värdena som är tillgängliga i mallen.However, you can use expressions to extend the JSON values available within the template. Uttryck börja och sluta med hakparenteser: [ och ]respektive.Expressions start and end with brackets: [ and ], respectively. Värdet för uttrycket utvärderas när mallen distribueras.The value of the expression is evaluated when the template is deployed. Ett uttryck kan returnera en sträng, heltal, booleskt värde, matris eller ett objekt.An expression can return a string, integer, boolean, array, or object. I följande exempel visar ett uttryck i standardvärdet för en parameter:The following example shows an expression in the default value of a parameter:

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

I uttrycket syntaxen resourceGroup() anropar någon av de funktioner som Resource Manager tillhandahåller för användning i en mall.Within the expression, the syntax resourceGroup() calls one of the functions that Resource Manager provides for use within a template. Precis som i JavaScript, funktionsanrop som är formaterade som functionName(arg1,arg2,arg3).Just like in JavaScript, function calls are formatted as functionName(arg1,arg2,arg3). Syntaxen .location hämtar en egenskap från objektet som returnerades av funktionen.The syntax .location retrieves one property from the object returned by that function.

Mallfunktioner och deras parametrar är skiftlägeskänsliga.Template functions and their parameters are case-insensitive. Exempel: Resource Manager löser variables('var1') och VARIABLES('VAR1') samma.For example, Resource Manager resolves variables('var1') and VARIABLES('VAR1') as the same. När det granskades, såvida inte funktionen ändrar uttryckligen skiftläge (till exempel toUpper eller toLower), funktionen bevarar skiftläge.When evaluated, unless the function expressly modifies case (such as toUpper or toLower), the function preserves the case. Vissa typer av resurser kan ha krav för användningsfall oavsett hur funktioner utvärderas.Certain resource types may have case requirements irrespective of how functions are evaluated.

Ha en teckensträng som börjar med en vänsterparentes [ och måste sluta med en högerparentes ], men inte har det tolkas som ett uttryck, lägga till en extra hakparentes för att starta strängen med [[.To have a literal string start with a left bracket [ and end with a right bracket ], but not have it interpreted as an expression, add an extra bracket to start the string with [[. Till exempel variabeln:For example, the variable:

"demoVar1": "[[test value]"

Motsvarar [test value].Resolves to [test value].

Men om den exakta strängen inte sluta med en hakparentes, inte escape-första hakparentes.However, if the literal string doesn't end with a bracket, don't escape the first bracket. Till exempel variabeln:For example, the variable:

"demoVar2": "[test] value"

Motsvarar [test] value.Resolves to [test] value.

Om du vill skicka ett strängvärde som en parameter till en funktion, Använd enkla citattecken.To pass a string value as a parameter to a function, use single quotes.

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

Använd ett omvänt snedstreck för att undvika dubbla citattecken i ett uttryck, till exempel lägga till en JSON-objekt i mallen.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\"}"
},

Ett malluttryck får inte överskrida 24,576 tecken.A template expression can't exceed 24,576 characters.

En fullständig lista över Mallfunktioner finns Azure Resource Manager-Mallfunktioner.For the full list of template functions, see Azure Resource Manager template functions.

ParametrarParameters

I avsnittet parametrar i mallen kan du ange vilka värden som du kan ange när du distribuerar resurser.In the parameters section of the template, you specify which values you can input when deploying the resources. Dessa parametervärden kan du anpassa distributionen genom att tillhandahålla värden som är skräddarsydda för en viss miljö (till exempel utveckling, testning och produktion).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). Du behöver inte ange parametrar i mallen, men utan parametrar mallen distribuerar alltid samma resurser med samma namn, platser och egenskaper.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.

Du är begränsad till 256 parametrar i en mall.You're limited to 256 parameters in a template. Du kan minska antalet parametrar av objekt som innehåller flera egenskaper som visas i den här artikeln.You can reduce the number of parameters by using objects that contain multiple properties, as shown in this article.

Tillgängliga egenskaperAvailable properties

Tillgängliga egenskaper för en parameter är: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>" 
    }
  }
}
ElementnamnElement name KrävsRequired BeskrivningDescription
parameterNameparameterName JaYes Namnet på parametern.Name of the parameter. Måste vara en giltig JavaScript-identifierare.Must be a valid JavaScript identifier.
typtype JaYes Typ av parametervärdet.Type of the parameter value. Tillåtna typer och värden är sträng, securestring, int, bool, objekt, secureObject, och matris.The allowed types and values are string, securestring, int, bool, object, secureObject, and array.
defaultValuedefaultValue NejNo Standardvärdet för parametern, om inget värde har angetts för parametern.Default value for the parameter, if no value is provided for the parameter.
allowedValuesallowedValues NejNo Matris med tillåtna värden för parametern för att se till att rätt värde har angetts.Array of allowed values for the parameter to make sure that the right value is provided.
minValueminValue NejNo Det minsta värdet för parametrar av typen int det här värdet är inkluderande.The minimum value for int type parameters, this value is inclusive.
maxValuemaxValue NejNo Det maximala värdet för parametrar av typen int det här värdet är inkluderande.The maximum value for int type parameters, this value is inclusive.
minLengthminLength NejNo Den minsta längden för string, säker sträng och matris typparametrar det här värdet är inkluderande.The minimum length for string, secure string, and array type parameters, this value is inclusive.
maxLengthmaxLength NejNo Den maximala längden för string, säker sträng och matris typparametrar det här värdet är inkluderande.The maximum length for string, secure string, and array type parameters, this value is inclusive.
descriptiondescription NejNo Beskrivning av den parameter som visas för användarna via portalen.Description of the parameter that is displayed to users through the portal. Mer information finns i kommentarer i mallar.For more information, see Comments in templates.

Definiera och Använd en parameterDefine and use a parameter

I följande exempel visar en enkel parameterdefinition.The following example shows a simple parameter definition. Den definierar namnet på parametern och anger att det tar ett strängvärde.It defines the name of the parameter, and specifies that it takes a string value. Parametern accepterar endast värden som passar för att fungera.The parameter only accepts values that make sense for its intended use. Den anger ett standardvärde om inget värde anges under distributionen.It specifies a default value when no value is provided during deployment. Slutligen innehåller parametern en beskrivning av dess användning.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."
    }
  }   
}

I mallen referera du till värdet för parametern med följande syntax:In the template, you reference the value for the parameter with the following syntax:

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

Mallfunktioner med parametrarTemplate functions with parameters

När du anger standardvärdet för en parameter, kan du använda de flesta Mallfunktioner.When specifying the default value for a parameter, you can use most template functions. Du kan använda ett annat parametervärde för att skapa ett standardvärde.You can use another parameter value to build a default value. Följande mall visar hur du använder funktioner i standardvärdet: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."
    }
  }
}

Du kan inte använda den reference funktionen i parameteravsnittet.You can't use the reference function in the parameters section. Parametrar utvärderas före distributionen så reference funktionen kan inte hämta runtime-tillståndet för en resurs.Parameters are evaluated before deployment so the reference function can't get the runtime state of a resource.

Objekt som parametrarObjects as parameters

Det kan vara enklare att organisera relaterade värden genom att skicka dem i som ett-objekt.It can be easier to organize related values by passing them in as an object. Den här metoden minskar också antalet parametrar i mallen.This approach also reduces the number of parameters in the template.

Definiera parametern i mallen och ange ett JSON-objekt i stället för ett enda värde under distributionen.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"
        }
      ]
    }
  }
},

Sedan referera subegenskaper för parametern genom att använda punktoperatorn.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]"
          }
        }
      ]
    }
  }
]

Parametern exempel på mallarParameter example templates

Dessa exempel på mallar visar några scenarier för att använda parametrar.These example templates demonstrate some scenarios for using parameters. Distribuera dem för att testa hur parametrar ska hanteras i olika scenarier.Deploy them to test how parameters are handled in different scenarios.

MallTemplate BeskrivningDescription
parametrar med funktioner för standardvärdenparameters with functions for default values Visar hur du använder Mallfunktioner när du definierar standardvärden för parametrar.Demonstrates how to use template functions when defining default values for parameters. Mallen distribuerar inte några resurser.The template doesn't deploy any resources. Den skapar parametervärden och returnerar dessa värden.It constructs parameter values and returns those values.
Parametern-objektparameter object Visar hur du använder ett objekt för en parameter.Demonstrates using an object for a parameter. Mallen distribuerar inte några resurser.The template doesn't deploy any resources. Den skapar parametervärden och returnerar dessa värden.It constructs parameter values and returns those values.

VariablerVariables

I avsnittet variables kan skapa du värden som kan användas i hela din mall.In the variables section, you construct values that can be used throughout your template. Du behöver inte definiera variabler, men de förenkla ofta din mall genom att minska komplexa uttryck.You don't need to define variables, but they often simplify your template by reducing complex expressions.

Tillgängliga definitionerAvailable definitions

I följande exempel visas de tillgängliga alternativen för att definiera en variabel: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>
    }
  ]
}

Information om hur du använder copy för att skapa flera värden för en variabel, se variabeln iteration.For information about using copy to create several values for a variable, see Variable iteration.

Definiera och använda en variabelDefine and use a variable

I följande exempel visas en variabeldefinitionen.The following example shows a variable definition. Ett strängvärde för namnet på ett lagringskonto skapas.It creates a string value for a storage account name. Den använder flera Mallfunktioner för att hämta ett parametervärde och sammanfogar den till en unik sträng.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))]"
},

Du använder variabeln när du definierar resursen.You use the variable when defining the resource.

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

Av konfigurationsvariablerConfiguration variables

Du kan använda komplexa JSON-typer för att definiera relaterade värden för en miljö.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
    }
  }
},

I parametrar skapar du ett värde som anger vilken konfiguration som värden som ska användas.In parameters, you create a value that indicates which configuration values to use.

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

Du kan hämta de aktuella inställningarna med:You retrieve the current settings with:

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

Exempel på åtgärdsvariabler mallarVariable example templates

Dessa exempel på mallar visar några scenarier för att använda variabler.These example templates demonstrate some scenarios for using variables. Distribuera dem för att testa hur variabler ska hanteras i olika scenarier.Deploy them to test how variables are handled in different scenarios.

MallTemplate BeskrivningDescription
variabeln definitionervariable definitions Visar de olika typerna av variabler.Demonstrates the different types of variables. Mallen distribuerar inte några resurser.The template doesn't deploy any resources. Den skapar variabelvärdena och returnerar dessa värden.It constructs variable values and returns those values.
konfiguration av variabelconfiguration variable Visar hur du använder en variabel som definierar konfigurationsvärden.Demonstrates the use of a variable that defines configuration values. Mallen distribuerar inte några resurser.The template doesn't deploy any resources. Den skapar variabelvärdena och returnerar dessa värden.It constructs variable values and returns those values.
Nätverkssäkerhetsregler och parameterfilennetwork security rules and parameter file Skapar en matris i rätt format för att tilldela säkerhetsregler till en nätverkssäkerhetsgrupp.Constructs an array in the correct format for assigning security rules to a network security group.

FunctionsFunctions

Du kan skapa egna funktioner i din mall.Within your template, you can create your own functions. Dessa funktioner är tillgängliga för användning i din mall.These functions are available for use in your template. Normalt kan definiera du komplicerat uttryck som du inte vill upprepa i hela din mall.Typically, you define complicated expression that you don't want to repeat throughout your template. Du kan skapa användardefinierade funktioner från uttryck och functions som stöds i mallar.You create the user-defined functions from expressions and functions that are supported in templates.

När du definierar en user-funktionen, finns det vissa begränsningar:When defining a user function, there are some restrictions:

  • Funktionen kan inte komma åt variabler.The function can't access variables.
  • Funktionen kan bara använda parametrar som definieras i funktionen.The function can only use parameters that are defined in the function. När du använder den parametrar funktionen i en användardefinierad funktion är du begränsad till parametrar för funktionen.When you use the parameters function within a user-defined function, you're restricted to the parameters for that function.
  • Funktionen kan inte anropa andra användardefinierade funktioner.The function can't call other user-defined functions.
  • Funktionen kan inte använda den refererar till funktionen.The function can't use the reference function.
  • Funktionens parametrar kan inte ha standardvärden.Parameters for the function can't have default values.

Dina funktioner kräver en namnområdesvärdet för att undvika namnkonflikter med Mallfunktioner.Your functions require a namespace value to avoid naming conflicts with template functions. I följande exempel visas en funktion som returnerar ett lagringskontonamn: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))]"
        }
      }
    }
  }
],

Du anropar en funktion med: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": {}
  }
]

ResurserResources

I resursavsnittet kan du definiera de resurser som är distribuerade eller uppdateras.In the resources section, you define the resources that are deployed or updated.

Tillgängliga egenskaperAvailable properties

Du definierar resurser med följande struktur: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>"
      ]
  }
]
ElementnamnElement name KrävsRequired BeskrivningDescription
conditioncondition NejNo Booleskt värde som anger om resursen ska etableras under den här distributionen.Boolean value that indicates whether the resource will be provisioned during this deployment. När true, där resursen skapas under distributionen.When true, the resource is created during deployment. När false, resursen är hoppades över för den här distributionen.When false, the resource is skipped for this deployment. Se villkor.See condition.
apiVersionapiVersion JaYes Version av REST-API för att använda för att skapa resursen.Version of the REST API to use for creating the resource. Information om tillgängliga värden finns mallreferensen.To determine available values, see template reference.
typetype JaYes Typ av resursen.Type of the resource. Det här värdet är en kombination av namnområde med resursprovidern och resurstypen (till exempel Microsoft.Storage/storageAccounts).This value is a combination of the namespace of the resource provider and the resource type (such as Microsoft.Storage/storageAccounts). Information om tillgängliga värden finns mallreferensen.To determine available values, see template reference. För en underordnad resurs, formatet för typ som beror på om den har bäddas in i den överordnade resursen eller definierats utanför den överordnade resursen.For a child resource, the format of the type depends on whether it's nested within the parent resource or defined outside of the parent resource. Se underordnade resurser.See child resources.
namename JaYes Namnet på resursen.Name of the resource. Namnet måste följa URI-komponent begränsningar som definierats i RFC3986.The name must follow URI component restrictions defined in RFC3986. Dessutom är Azure-tjänster som exponerar resursnamnet externa parter Kontrollera namnet och kontrollera att det inte ett försök att imitera en annan identitet.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. Formatet på namnet beror på om den kapslade i den överordnade resursen eller definierats utanför den överordnade resursen för en underordnad resurs.For a child resource, the format of the name depends on whether it's nested within the parent resource or defined outside of the parent resource. Se underordnade resurser.See child resources.
locationlocation VarierarVaries Geo-platser som stöds för den angivna resursen.Supported geo-locations of the provided resource. Du kan välja någon av de tillgängliga platserna, men vanligtvis det vara bra att välja ett som är nära användarna.You can select any of the available locations, but typically it makes sense to pick one that is close to your users. Vanligtvis är det också vara bra att placera resurser som interagerar med varandra i samma region.Usually, it also makes sense to place resources that interact with each other in the same region. De flesta typer av resurser kräver en plats, men vissa typer (till exempel en rolltilldelning) kräver inte en plats.Most resource types require a location, but some types (such as a role assignment) don't require a location.
taggartags NejNo Taggar som är kopplade till resursen.Tags that are associated with the resource. Lägga till taggar för att organisera resurser logiskt i din prenumeration.Apply tags to logically organize resources across your subscription.
kommentarercomments NejNo Dina anteckningar för att dokumentera resurserna i mallen.Your notes for documenting the resources in your template. Mer information finns i kommentarer i mallar.For more information, see Comments in templates.
Kopieracopy NejNo Om fler än en instans, hur många resurser för att skapa.If more than one instance is needed, the number of resources to create. Standardläget är parallell.The default mode is parallel. Ange seriell läge när du inte vill att alla eller resurserna som ska distribueras på samma gång.Specify serial mode when you don't want all or the resources to deploy at the same time. Mer information finns i och skapa flera instanser av resurser i Azure Resource Manager.For more information, see Create several instances of resources in Azure Resource Manager.
dependsOndependsOn NejNo Resurser som måste distribueras innan den här resursen har distribuerats.Resources that must be deployed before this resource is deployed. Resource Manager utvärderar beroenden mellan resurser och distribuerar dem i rätt ordning.Resource Manager evaluates the dependencies between resources and deploys them in the correct order. När resurserna inte är beroende av varandra, är de distribueras parallellt.When resources aren't dependent on each other, they're deployed in parallel. Värdet kan vara en kommaavgränsad lista över en resurs namn eller resurs unika identifierare.The value can be a comma-separated list of a resource names or resource unique identifiers. Endast lista över resurser som distribueras i den här mallen.Only list resources that are deployed in this template. Resurser som inte har definierats i den här mallen måste redan finnas.Resources that aren't defined in this template must already exist. Undvik att lägga till onödiga beroenden som de kan sakta distributionen och skapa cirkulärt tjänstberoende.Avoid adding unnecessary dependencies as they can slow your deployment and create circular dependencies. Anvisningar för inställningen beroenden finns i definiera beroenden i Azure Resource Manager-mallar.For guidance on setting dependencies, see Defining dependencies in Azure Resource Manager templates.
propertiesproperties NejNo Resurs-specifika konfigurationsinställningar.Resource-specific configuration settings. Värdena för egenskaperna är samma som de värden som du anger i begärandetexten för REST API-åtgärd (PUT-metoden) att skapa resursen.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. Du kan också ange en kopia matris för att skapa flera instanser av en egenskap.You can also specify a copy array to create several instances of a property. Information om tillgängliga värden finns mallreferensen.To determine available values, see template reference.
skusku NejNo Vissa resurser kan värden som definierar SKU för att distribuera.Some resources allow values that define the SKU to deploy. Du kan till exempel ange typen av redundans för ett lagringskonto.For example, you can specify the type of redundancy for a storage account.
typkind NejNo Vissa resurser kan ett värde som definierar typ av resurs som du distribuerar.Some resources allow a value that defines the type of resource you deploy. Du kan till exempel ange vilken typ av Cosmos DB för att skapa.For example, you can specify the type of Cosmos DB to create.
planplan NejNo Vissa resurser kan värden som definierar planerar att distribuera.Some resources allow values that define the plan to deploy. Du kan till exempel ange marketplace-avbildning för en virtuell dator.For example, you can specify the marketplace image for a virtual machine.
Resurserresources NejNo Underordnade resurser som är beroende av resursen som definieras.Child resources that depend on the resource being defined. Ange endast resurstyper som tillåts av schemat för den överordnade resursen.Only provide resource types that are permitted by the schema of the parent resource. Beroende på den överordnade resursen är inte underförstådd.Dependency on the parent resource isn't implied. Du måste uttryckligen definiera det beroendet.You must explicitly define that dependency. Se underordnade resurser.See child resources.

TillståndCondition

När du måste bestämma under distributionen om du vill skapa en resurs, använda den condition element.When you must decide during deployment whether to create a resource, use the condition element. Värdet för det här elementet matchas till true eller false.The value for this element resolves to true or false. När värdet är true, skapas resursen.When the value is true, the resource is created. När värdet är false är inte resursen skapas.When the value is false, the resource isn't created. Värdet kan bara tillämpas på hela resursen.The value can only be applied to the whole resource.

Normalt använder du det här värdet när du vill skapa en ny resurs eller Använd en befintlig.Typically, you use this value when you want to create a new resource or use an existing one. Till exempel vill ange om ett nytt lagringskonto har distribuerats eller ett befintligt lagringskonto används, använder du: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": {}
}

För en komplett exempel-mall som använder den condition element, se virtuell dator med ett nytt eller befintligt virtuellt nätverk, lagring och offentlig IP-adress.For a complete example template that uses the condition element, see VM with a new or existing Virtual Network, Storage, and Public IP.

Om du använder en referens eller lista funktion med en resurs som distribueras villkorligt funktionen utvärderas även om resursen inte är distribuerats.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. Du får ett felmeddelande om funktionen refererar till en resurs som inte finns.You get an error if the function refers to a resource that doesn't exist. Använd den om funktionen för att kontrollera att funktionen utvärderas bara för villkor när resursen har distribuerats.Use the if function to make sure the function is only evaluated for conditions when the resource is deployed. Se den om funktionen för ett exempel på en mall som använder om och referensen med en villkorligt distribuerade resursen.See the if function for a sample template that uses if and reference with a conditionally deployed resource.

ResursnamnResource names

I allmänhet bör arbeta du med tre typer av resursnamn i Resource Manager:Generally, you work with three types of resource names in Resource Manager:

  • Resursnamn som måste vara unika.Resource names that must be unique.
  • Resursnamn som inte behöver vara unikt, men du kan du välja att ange ett namn som hjälper dig att identifiera resursen.Resource names that aren't required to be unique, but you choose to provide a name that can help you identify the resource.
  • Resursnamn som kan vara allmän.Resource names that can be generic.

Ange en unika resursnamn för någon resurstyp som har en slutpunkt för åtkomst av data.Provide a unique resource name for any resource type that has a data access endpoint. Vissa vanliga typer av resurser som kräver ett unikt namn är:Some common resource types that require a unique name include:

  • Azure Storage1Azure Storage1
  • Funktionen Web Apps i Azure App ServiceWeb Apps feature of Azure App Service
  • SQL ServerSQL Server
  • Azure Key VaultAzure Key Vault
  • Azure Cache for RedisAzure Cache for Redis
  • Azure BatchAzure Batch
  • Azure Traffic ManagerAzure Traffic Manager
  • Azure SearchAzure Search
  • Azure HDInsightAzure HDInsight

1 lagringskontonamn måste också vara gemener, 24 tecken eller mindre, och inte har någon bindestreck.1 Storage account names also must be lowercase, 24 characters or less, and not have any hyphens.

När du anger namnet, du kan manuellt skapa ett unikt namn eller använda den uniqueString() funktionen för att skapa ett namn.When setting the name, you can either manually create a unique name or use the uniqueString() function to generate a name. Du kanske också vill lägga till ett prefix eller suffix till den uniqueString resultatet.You also might want to add a prefix or suffix to the uniqueString result. Ändra det unika namnet kan du enkelt identifiera resurstyp från namn.Modifying the unique name can help you more easily identify the resource type from the name. Du kan till exempel generera ett unikt namn för ett lagringskonto med hjälp av följande variabel:For example, you can generate a unique name for a storage account by using the following variable:

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

För vissa typer av resurser, kanske du vill ange en namn för att identifiera, men namnet behöver inte vara unika.For some resource types, you might want to provide a name for identification, but the name doesn't have to be unique. Ange ett namn som beskriver den användning eller egenskaper för dessa typer av resurser.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."
    }
  }
}

För resurstyperna som du främst åtkomst via en annan resurs, kan du använda en allmänt namn som är hårdkodad i mallen.For resource types that you mostly access through a different resource, you can use a generic name that is hard-coded in the template. Du kan till exempel ange ett standard, allmän namn på brandväggsregler på en SQLServer:For example, you can set a standard, generic name for firewall rules on a SQL server:

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

ResursplatsResource location

När du distribuerar en mall måste du ange en plats för varje resurs.When deploying a template, you must provide a location for each resource. Olika resurstyper stöds på olika platser.Different resource types are supported in different locations. För att få platser som stöds för en resurstyp kan se Azure resursproviders och resurstyper.To get the supported locations for a resource type, see Azure resource providers and types.

Använd en parameter för att ange plats för resurser och ange standardvärdet till resourceGroup().location.Use a parameter to specify the location for resources, and set the default value to resourceGroup().location.

I följande exempel visas ett lagringskonto som har distribuerats till en plats som anges som en parameter: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')]"
    }
  }
}

Underordnade resurserChild resources

Du kan också definiera en uppsättning underordnade resurser inom vissa typer av resurser.Within some resource types, you can also define an array of child resources. Underordnade resurser finns resurser som finns bara inom ramen för en annan resurs.Child resources are resources that only exist within the context of another resource. Till exempel kan inte en SQL-databas finnas utan en SQLServer så att databasen är en underordnad till servern.For example, a SQL database can't exist without a SQL server so the database is a child of the server. Du kan definiera databasen i definitionen för servern.You can define the database within the definition for the server.

{
  "apiVersion": "2015-05-01-preview",
  "type": "Microsoft.Sql/servers",
  "name": "exampleserver",
  ...
  "resources": [
    {
      "apiVersion": "2017-10-01-preview",
      "type": "databases",
      "name": "exampledatabase",
      ...
    }
  ]
}

Men du behöver definiera databasen på servern.But, you don't have to define the database within the server. Du kan definiera den underordnade resursen på den översta nivån.You can define the child resource at the top level. Du kan använda den här metoden om den överordnade resursen inte är distribuerat i samma mall, eller om vill använda copy att skapa fler än en underordnad resurs.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. Med den här metoden måste du ange fullständig resurstypen och inkludera namnet på överordnade resursen i namnet på underordnade resursen.With this approach, you must provide the full resource type, and include the parent resource name in the child resource name.

{
  "apiVersion": "2015-05-01-preview",
  "type": "Microsoft.Sql/servers",
  "name": "exampleserver",
  "resources": [ 
  ],
  ...
},
{
  "apiVersion": "2017-10-01-preview",
  "type": "Microsoft.Sql/servers/databases",
  "name": "exampleserver/exampledatabase",
  ...
}

De värden som du anger för typ av och namn varierar beroende på om den underordnade resursen har definierats i den överordnade resursen eller utanför den överordnade resursen.The values you provide for type and name vary based on whether the child resource is defined within the parent resource or outside of the parent resource.

Använd när kapslade i den överordnade resursen:When nested in the parent resource, use:

"type": "{child-resource-type}",
"name": "{child-resource-name}",

När definierats utanför den överordnade resursen kan använda:When defined outside of the parent resource, use:

"type": "{resource-provider-namespace}/{parent-resource-type}/{child-resource-type}",
"name": "{parent-resource-name}/{child-resource-name}",

När kapslade, vilken anges till databases men dess fullständiga resurstypen är fortfarande Microsoft.Sql/servers/databases.When nested, the type is set to databases but its full resource type is still Microsoft.Sql/servers/databases. Du inte anger Microsoft.Sql/servers/ eftersom det antas från den överordnade resurstypen.You don't provide Microsoft.Sql/servers/ because it's assumed from the parent resource type. Namnet på underordnade resursen är inställd exampledatabase men det fullständiga namnet innehåller namnet på överordnade.The child resource name is set to exampledatabase but the full name includes the parent name. Du inte anger exampleserver eftersom det antas från den överordnade resursen.You don't provide exampleserver because it's assumed from the parent resource.

När en fullständiga referens till en resurs, inte bara en sammanfogning av två den för att kombinera segment från typ och namn.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. Använd i stället en sekvens med efter namnområdet, typnamn/ par från minst specifika att mest specifika: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}]*

Exempel:For example:

Microsoft.Compute/virtualMachines/myVM/extensions/myExt stämmer Microsoft.Compute/virtualMachines/extensions/myVM/myExt stämmer inteMicrosoft.Compute/virtualMachines/myVM/extensions/myExt is correct Microsoft.Compute/virtualMachines/extensions/myVM/myExt is not correct

UtdataOutputs

I Outputs-avsnittet anger du värden som returneras från distributionen.In the Outputs section, you specify values that are returned from deployment. Normalt kan returnera du värden från resurser som har distribuerats.Typically, you return values from resources that were deployed.

Tillgängliga egenskaperAvailable properties

I följande exempel visar strukturen för en utdata-definition: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>"
  }
}
ElementnamnElement name KrävsRequired BeskrivningDescription
outputNameoutputName JaYes Namnet på värdet.Name of the output value. Måste vara en giltig JavaScript-identifierare.Must be a valid JavaScript identifier.
conditioncondition NejNo Booleskt värde som anger om utdata detta värde returneras.Boolean value that indicates whether this output value is returned. När true, värdet ingår i utdata för distributionen.When true, the value is included in the output for the deployment. När false, hoppas över värdet för den här distributionen.When false, the output value is skipped for this deployment. Om inget värde anges är standardvärdet true.When not specified, the default value is true.
typetype JaYes Typ av utdatavärde.Type of the output value. Utdatavärden stöder samma datatyper som mall indataparametrar.Output values support the same types as template input parameters. Om du anger securestring för utdatatypen värdet inte visas i distributionshistoriken och kan inte hämtas från en annan mall.If you specify securestring for the output type, the value isn't displayed in the deployment history and can't be retrieved from another template. Om du vill använda ett hemligt värde i mer än en mall, lagra hemligheten i Key Vault och referera till hemligheten i parameterfilen.To use a secret value in more than one template, store the secret in a Key Vault and reference the secret in the parameter file. Mer information finns i använda Azure Key Vault för att skicka säkra parametervärdet under distributionen.For more information, see Use Azure Key Vault to pass secure parameter value during deployment.
valuevalue JaYes Mallspråksuttrycket som utvärderas och returneras som utdatavärde.Template language expression that is evaluated and returned as output value.

Definiera och Använd utdatavärdenDefine and use output values

I följande exempel visas hur du skickar tillbaka resurs-ID för en offentlig IP-adress: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'))]"
  }
}

I nästa exempel visas hur du returnerar villkorligt resurs-ID för en offentlig IP-adress baserat på om en ny något har distribuerats: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'))]"
  }
}

Ett enkelt exempel på villkorlig utdata Se villkorlig utdata mallen.For a simple example of conditional output, see conditional output template.

Efter distributionen kan hämta du värdet med skript.After the deployment, you can retrieve the value with script. Om du använder PowerShell använder du:For PowerShell, use:

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

Om du använder Azure CLI använder du:For Azure CLI, use:

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

Du kan hämta värdet från en länkad mall med hjälp av den referens funktion.You can retrieve the output value from a linked template by using the reference function. För att få utdatavärde från en länkad mall kan hämta egenskapens värde med syntax som: "[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]".

När du hämtar en egenskap för utdata från en länkad mall, får inte egenskapsnamnet innehålla ett bindestreck.When getting an output property from a linked template, the property name can't include a dash.

I följande exempel visas hur du ställer in IP-adressen för en belastningsutjämnare genom att hämta ett värde från en länkad mall.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]"
}

Du kan inte använda den reference funktion i avsnittet utdata i en kapslade mallen.You can't use the reference function in the outputs section of a nested template. Konvertera kapslade mallen till en länkad mall för att returnera värden för en distribuerad resurs i en kapslad mall.To return the values for a deployed resource in a nested template, convert your nested template to a linked template.

Exempel på utdata-mallarOutput example templates

MallTemplate BeskrivningDescription
Kopiera variablerCopy variables Skapar komplexa variabler och matar ut dessa värden.Creates complex variables and outputs those values. Distribuerar inte några resurser.Doesn't deploy any resources.
Offentlig IP-adressPublic IP address Skapar en offentlig IP-adress och matar ut resurs-ID.Creates a public IP address and outputs the resource ID.
LastbalanserareLoad balancer Länkar till föregående mall.Links to the preceding template. Använder resurs-ID i utdata när du skapar belastningsutjämnaren.Uses the resource ID in the output when creating the load balancer.

Kommentarer och metadataComments and metadata

Du har några alternativ för att lägga till kommentarer och metadata i mallen.You have a few options for adding comments and metadata to your template.

Du kan lägga till en metadata nästan var som helst i din mall.You can add a metadata object almost anywhere in your template. Resource Manager ignorerar objektet, men JSON-redigerare kan varna dig att egenskapen är inte giltig.Resource Manager ignores the object, but your JSON editor may warn you that the property isn't valid. Definiera egenskaper som du behöver i objektet.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"
  },

För parametrar, lägga till en metadata objekt med en description egenskapen.For parameters, add a metadata object with a description property.

"parameters": {
  "adminUsername": {
    "type": "string",
    "metadata": {
      "description": "User name for the Virtual Machine."
    }
  },

När du distribuerar mallen via portalen, används automatiskt texten som du anger i beskrivningen som ett tips för den parametern.When deploying the template through the portal, the text you provide in the description is automatically used as a tip for that parameter.

Visa parametern tips

För resurser, lägga till en comments element eller ett metadataobjekt.For resources, add a comments element or a metadata object. I följande exempel visar både ett element med kommentarer och ett metadataobjekt.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": {}
  }
]

För matar ut, lägga till ett metadataobjekt i värdet.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"
    }
  },

Du kan inte lägga till ett metadataobjekt användardefinierade funktioner.You can't add a metadata object to user-defined functions.

Du kan använda för infogade kommentarer // men den här syntaxen fungerar inte med alla verktyg.For inline comments, you can use // but this syntax doesn't work with all tools. Du kan inte använda Azure CLI för att distribuera mallen med infogade kommentarer.You can't use Azure CLI to deploy the template with inline comments. Och du kan inte använda redigeraren för mall för att arbeta med mallar med infogade kommentarer.And, you can't use the portal template editor to work on templates with inline comments. Om du lägger till den här typen av kommentar var noga med att de verktyg du använder supporten infogade JSON kommentarer.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'))]"
  ],

I VS Code kan du ange språkläge till JSON med kommentarer.In VS Code, you can set the language mode to JSON with comments. Infogade kommentarer markeras som ogiltig.The inline comments are no longer marked as invalid. Att ändra läget:To change the mode:

  1. Öppna val av språk läge (Ctrl + K M)Open language mode selection (Ctrl+K M)

  2. Välj JSON med kommentarer.Select JSON with Comments.

    Välj språkläge

Snabbstarter och självstudierQuickstarts and tutorials

Använd följande snabbstarter och självstudier för att lära dig hur du utvecklar resurshanterarmallar:Use the following quickstarts and tutorials to learn how to develop resource manager templates:

  • SnabbstarterQuickstarts

    TitelTitle BeskrivningDescription
    Använda Azure PortalUse the Azure portal Skapa en mall med hjälp av portalen och förstå processen med att redigera och distribuera mallen.Generate a template using the portal, and understand the process of editing and deploying the template.
    Använda Visual Studio CodeUse Visual Studio Code Använd Visual Studio Code för att skapa och redigera mallar och hur du använder Azure Cloud Shell för att distribuera mallar.Use Visual Studio Code to create and edit templates, and how to use the Azure Cloud shell to deploy templates.
    Använda Visual StudioUse Visual Studio Använd Visual Studio för att skapa, redigera och distribuera mallar.Use Visual Studio to create, edit, and deploy templates.
  • SjälvstudierTutorials

    TitelTitle BeskrivningDescription
    Använda mallreferensUtilize template reference Använd referensdokumentationen till mallar för att utveckla mallar.Utilize the template reference documentation to develop templates. I självstudien hittar du schemat för lagringskonto och använder informationen för att skapa ett krypterat lagringskonto.In the tutorial, you find the storage account schema, and use the information to create an encrypted storage account.
    Skapa flera instanserCreate multiple instances Skapa flera instanser av Azure-resurser.Create multiple instances of Azure resources. I självstudiekursen skapar du flera instanser av lagringskonto.In the tutorial, you create multiple instances of storage account.
    Ange resursdistributionsordningSet resource deployment order Definiera resursberoenden.Define resource dependencies. I självstudien skapar du ett virtuellt nätverk, en virtuell dator och de beroende Azure-resurserna.In the tutorial, you create a virtual network, a virtual machine, and the dependent Azure resources. Du lär dig hur beroenden definieras.You learn how the dependencies are defined.
    Använda villkorUse conditions Distribuera resurser baserat på vissa parametervärden.Deploy resources based on some parameter values. I självstudien definierar du en mall för att skapa ett nytt lagringskonto eller använda ett befintligt lagringskonto baserat på värdet för en parameter.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.
    Integrera nyckelvalvIntegrate key vault Hämta hemligheter/lösenord från Azure Key Vault.Retrieve secrets/passwords from Azure Key Vault. I självstudien skapar du en virtuell dator.In the tutorial, you create a virtual machine. Administratörslösenordet för den virtuella datorn hämtas från ett nyckelvalv.The virtual machine administrator password is retrieved from a Key Vault.
    Skapa länkade mallarCreate linked templates Modularisera mallar och anropa andra mallar från en mall.Modularize templates, and call other templates from a template. I självstudien skapar du ett virtuellt nätverk, en virtuell dator och de beroende resurserna.In the tutorial, you create a virtual network, a virtual machine, and the dependent resources. Det beroende lagringskontot definieras i en länkad mall.The dependent storage account is defined in a linked template.
    Distribuera tillägg för virtuell datorDeploy virtual machine extensions Utföra uppgifter efter distribution med hjälp av tillägg.Perform post-deployment tasks by using extensions. I självstudien distribuerar du en kundskriptstillägget om du vill installera webbserver på den virtuella datorn.In the tutorial, you deploy a customer script extension to install web server on the virtual machine.
    Distribuera SQL-tilläggDeploy SQL extensions Utföra uppgifter efter distribution med hjälp av tillägg.Perform post-deployment tasks by using extensions. I självstudien distribuerar du en kundskriptstillägget om du vill installera webbserver på den virtuella datorn.In the tutorial, you deploy a customer script extension to install web server on the virtual machine.
    Säker artefakterSecure artifacts Skydda artefakter som krävs för att slutföra distributionen.Secure the artifacts needed to complete the deployments. Lär dig hur du skyddar den artefakt som används i självstudien för distribuera SQL-tillägg i självstudien.In the tutorial, you learn how to secure the artifact used in the Deploy SQL extensions tutorial.
    Använda säkra distributionsmetoderUse safe deployment practices Använd Distributionshanteraren i Azure.Use Azure Deployment manager.
    Självstudie: Felsöka malldistributioner för Resource ManagerTutorial: Troubleshoot Resource Manager template deployments Felsöka distributionsproblem i mallen.Troubleshoot template deployment issues.

De här självstudierna kan användas separat eller som en serie få större Resource Manager-mall utveckling begrepp.These tutorials can be used individually, or as a series to learn the major Resource Manager template development concepts.

Nästa stegNext steps