Pochopení struktury a syntaxe šablon Azure Resource ManagerUnderstand the structure and syntax of Azure Resource Manager templates

Tento článek popisuje strukturu Azure Resource Manager šablony.This article describes the structure of an Azure Resource Manager template. Zobrazuje různé oddíly šablony a vlastnosti, které jsou k dispozici v těchto oddílech.It presents the different sections of a template and the properties that are available in those sections.

Tento článek je určený pro uživatele, kteří mají určitou znalost Správce prostředků šablon.This article is intended for users who have some familiarity with Resource Manager templates. Poskytuje podrobné informace o struktuře šablony.It provides detailed information about the structure of the template. Pokud chcete seznámení s vytvářením šablony, přečtěte si téma Azure Resource Manager šablony.If you want an introduction to creating a template, see Azure Resource Manager templates.

Formát šablonyTemplate format

V nejjednodušší struktuře má šablona následující prvky: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": {  }
}
Název elementuElement name Požaduje seRequired PopisDescription
$schema$schema AnoYes Umístění souboru schématu JSON, který popisuje verzi jazyka šablony.Location of the JSON schema file that describes the version of the template language.

Pro nasazení skupin prostředků použijte: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#

Pro nasazení předplatných použijte: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 AnoYes Verze šablony (například 1.0.0.0).Version of the template (such as 1.0.0.0). Pro tento prvek můžete zadat libovolnou hodnotu.You can provide any value for this element. Tuto hodnotu použijte k dokumentování významných změn v šabloně.Use this value to document significant changes in your template. Při nasazování prostředků pomocí šablony můžete tuto hodnotu použít k tomu, abyste se ujistili, že je používána pravá šablona.When deploying resources using the template, this value can be used to make sure that the right template is being used.
apiProfileapiProfile NeNo Verze rozhraní API, která slouží jako kolekce verzí rozhraní API pro typy prostředků.An API version that serves as a collection of API versions for resource types. Tuto hodnotu použijte, chcete-li se vyhnout nutnosti zadávat verze rozhraní API pro každý prostředek v šabloně.Use this value to avoid having to specify API versions for each resource in the template. Když zadáte verzi profilu rozhraní API a nezadáte verzi rozhraní API pro typ prostředku, Správce prostředků používá verzi rozhraní API pro tento typ prostředku, který je definovaný v profilu.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.

Vlastnost profil rozhraní API je užitečná hlavně při nasazení šablony do různých prostředí, jako je Azure Stack a globální Azure.The API profile property is especially helpful when deploying a template to different environments, such as Azure Stack and global Azure. Pomocí verze profilu rozhraní API se ujistěte, že vaše šablona automaticky používá verze, které jsou v obou prostředích podporované.Use the API profile version to make sure your template automatically uses versions that are supported in both environments. Seznam aktuálních verzí profilů rozhraní API a verzí rozhraní API prostředků definovaných v profilu najdete v tématu profil rozhraní API.For a list of the current API profile versions and the resources API versions defined in the profile, see API Profile.

Další informace najdete v tématu sledování verzí pomocí profilů rozhraní API.For more information, see Track versions using API profiles.
parametersparameters NeNo Hodnoty, které jsou k dispozici při spuštění nasazení za účelem přizpůsobení nasazení prostředků.Values that are provided when deployment is executed to customize resource deployment.
variablesvariables NeNo Hodnoty, které se používají jako fragmenty JSON v šabloně pro zjednodušení výrazů jazyka šablony.Values that are used as JSON fragments in the template to simplify template language expressions.
functionsfunctions NeNo Uživatelsky definované funkce, které jsou k dispozici v rámci šablony.User-defined functions that are available within the template.
resourcesresources AnoYes Typy prostředků, které se nasazují nebo aktualizují v rámci skupiny prostředků nebo předplatného.Resource types that are deployed or updated in a resource group or subscription.
outputsoutputs NeNo Hodnoty, které se vrátí po nasazení.Values that are returned after deployment.

Každý prvek má vlastnosti, které lze nastavit.Each element has properties you can set. V tomto článku jsou podrobněji popsány části šablony.This article describes the sections of the template in greater detail.

ParametryParameters

V části Parameters (parametry) v šabloně určíte, které hodnoty můžete zadat při nasazování prostředků.In the parameters section of the template, you specify which values you can input when deploying the resources. V šabloně budete omezeni na 256 parametrů.You're limited to 256 parameters in a template. Počet parametrů můžete snížit pomocí objektů, které obsahují více vlastností.You can reduce the number of parameters by using objects that contain multiple properties.

Dostupné vlastnosti pro parametr: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>" 
    }
  }
}
Název elementuElement name Požaduje seRequired PopisDescription
název parametruparameter-name AnoYes Název parametruName of the parameter. Musí být platný identifikátor jazyka JavaScript.Must be a valid JavaScript identifier.
typetype AnoYes Typ hodnoty parametruType of the parameter value. Povolené typy a hodnoty jsou String, SecureString, int, bool, Object, secureObjecta Array.The allowed types and values are string, securestring, int, bool, object, secureObject, and array.
defaultValuedefaultValue NeNo Výchozí hodnota parametru, pokud není k dispozici žádná hodnota pro parametr.Default value for the parameter, if no value is provided for the parameter.
allowedValuesallowedValues NeNo Pole povolených hodnot pro parametr, aby bylo zajištěno, že je zadána pravá hodnota.Array of allowed values for the parameter to make sure that the right value is provided.
minValueminValue NeNo Minimální hodnota pro parametry typu int je tato hodnota včetně.The minimum value for int type parameters, this value is inclusive.
maxValuemaxValue NeNo Maximální hodnota pro parametry typu int je tato hodnota včetně.The maximum value for int type parameters, this value is inclusive.
minLengthminLength NeNo Minimální délka parametrů pro řetězec, zabezpečený řetězec a typ pole je hodnota včetně.The minimum length for string, secure string, and array type parameters, this value is inclusive.
maxLengthmaxLength NeNo Maximální délka parametrů pro řetězec, zabezpečený řetězec a typ pole je hodnota včetně.The maximum length for string, secure string, and array type parameters, this value is inclusive.
descriptiondescription NeNo Popis parametru, který se uživatelům zobrazí prostřednictvím portálu.Description of the parameter that is displayed to users through the portal. Další informace najdete v tématu komentáře v šablonách.For more information, see Comments in templates.

Příklady použití parametrů naleznete v tématu Parameters in Azure Resource Manager Templates.For examples of how to use parameters, see Parameters in Azure Resource Manager templates.

ProměnnéVariables

V části proměnné můžete vytvářet hodnoty, které lze použít v rámci šablony.In the variables section, you construct values that can be used throughout your template. Nemusíte definovat proměnné, ale často zjednodušují vaši šablonu tím, že snižují složité výrazy.You don't need to define variables, but they often simplify your template by reducing complex expressions.

Následující příklad ukazuje dostupné možnosti pro definování proměnné: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>
    }
  ]
}

Informace o použití copy pro vytvoření několika hodnot proměnné naleznete v tématu Variable iterace.For information about using copy to create several values for a variable, see Variable iteration.

Příklady použití proměnných naleznete v tématu proměnné v šabloně Azure Resource Manager.For examples of how to use variables, see Variables in Azure Resource Manager template.

FunkceFunctions

V rámci šablony můžete vytvořit vlastní funkce.Within your template, you can create your own functions. Tyto funkce jsou k dispozici pro použití ve vaší šabloně.These functions are available for use in your template. Obvykle definujete složitý výraz, který nechcete opakovat v rámci šablony.Typically, you define complicated expression that you don't want to repeat throughout your template. Můžete vytvořit uživatelsky definované funkce z výrazů a funkcí , které jsou podporovány v šablonách.You create the user-defined functions from expressions and functions that are supported in templates.

Při definování uživatelské funkce existují určitá omezení:When defining a user function, there are some restrictions:

  • Funkce nemá přístup k proměnným.The function can't access variables.
  • Funkce může používat pouze parametry, které jsou definovány ve funkci.The function can only use parameters that are defined in the function. Použijete-li funkci Parameters v rámci uživatelsky definované funkce, budete omezeni na parametry této funkce.When you use the parameters function within a user-defined function, you're restricted to the parameters for that function.
  • Funkce nemůže volat jiné uživatelsky definované funkce.The function can't call other user-defined functions.
  • Funkce nemůže používat odkazovou funkci.The function can't use the reference function.
  • Parametry pro funkci nemohou mít výchozí hodnoty.Parameters for the function can't have default values.
"functions": [
  {
    "namespace": "<namespace-for-functions>",
    "members": {
      "<function-name>": {
        "parameters": [
          {
            "name": "<parameter-name>",
            "type": "<type-of-parameter-value>"
          }
        ],
        "output": {
          "type": "<type-of-output-value>",
          "value": "<function-return-value>"
        }
      }
    }
  }
],
Název elementuElement name Požaduje seRequired PopisDescription
– obor názvůnamespace AnoYes Obor názvů pro vlastní funkceNamespace for the custom functions. Použijte k zamezení konfliktu názvů s funkcemi šablon.Use to avoid naming conflicts with template functions.
název funkcefunction-name AnoYes Název vlastní funkceName of the custom function. Při volání funkce kombinovat název funkce s oborem názvů.When calling the function, combine the function name with the namespace. Například pro volání funkce s názvem uniqueName v oboru názvů contoso, použijte "[contoso.uniqueName()]".For example, to call a function named uniqueName in the namespace contoso, use "[contoso.uniqueName()]".
název parametruparameter-name NeNo Název parametru, který se má použít v rámci vlastní funkceName of the parameter to be used within the custom function.
hodnota parametruparameter-value NeNo Typ hodnoty parametruType of the parameter value. Povolené typy a hodnoty jsou String, SecureString, int, bool, Object, secureObjecta Array.The allowed types and values are string, securestring, int, bool, object, secureObject, and array.
výstupní typoutput-type AnoYes Typ výstupní hodnoty.Type of the output value. Výstupní hodnoty podporují stejné typy jako vstupní parametry funkce.Output values support the same types as function input parameters.
výstupní hodnotaoutput-value AnoYes Výraz jazyka šablony, který je vyhodnocen a vrácen z funkce.Template language expression that is evaluated and returned from the function.

Příklady použití vlastních funkcí naleznete v tématu uživatelsky definované funkce v šabloně Azure Resource Manager.For examples of how to use custom functions, see User-defined functions in Azure Resource Manager template.

Zdroje a prostředkyResources

V části Resources (prostředky) definujete prostředky, které jsou nasazené nebo aktualizované.In the resources section, you define the resources that are deployed or updated.

Provedete definování prostředků s následující strukturou: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>"
      ]
  }
]
Název elementuElement name Požaduje seRequired PopisDescription
conditioncondition NeNo Logická hodnota, která označuje, jestli se prostředek zřídí během tohoto nasazení.Boolean value that indicates whether the resource will be provisioned during this deployment. Kdy truese prostředek vytvoří během nasazování.When true, the resource is created during deployment. Kdy falsese prostředek pro toto nasazení přeskočí.When false, the resource is skipped for this deployment. Zobrazit podmínku.See condition.
apiVersionapiVersion AnoYes Verze REST API, která se má použít k vytvoření prostředkuVersion of the REST API to use for creating the resource. Chcete-li zjistit dostupné hodnoty, přečtěte si téma Reference k šabloně.To determine available values, see template reference.
typetype AnoYes Typ prostředku.Type of the resource. Tato hodnota je kombinací oboru názvů poskytovatele prostředků a typu prostředku (například Microsoft. Storage/storageAccounts).This value is a combination of the namespace of the resource provider and the resource type (such as Microsoft.Storage/storageAccounts). Chcete-li zjistit dostupné hodnoty, přečtěte si téma Reference k šabloně.To determine available values, see template reference. U podřízených prostředků závisí formát typu na tom, jestli je vnořený v nadřazeném prostředku nebo definovaný mimo nadřazený prostředek.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. Viz Nastavení názvu a typu pro podřízené prostředky.See Set name and type for child resources.
namename AnoYes Název prostředku.Name of the resource. Název musí splňovat omezení součásti identifikátoru URI definovaná v RFC3986.The name must follow URI component restrictions defined in RFC3986. Služby Azure, které zveřejňují název prostředku mimo jiné, ověřují název, aby se ujistil, že se nejedná o pokus o falšování jiné identity.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. U podřízeného prostředku formát názvu závisí na tom, jestli je vnořený v nadřazeném prostředku nebo definovaný mimo nadřazený prostředek.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. Viz Nastavení názvu a typu pro podřízené prostředky.See Set name and type for child resources.
locationlocation RůznéVaries Podporovaná geografická umístění poskytnutého prostředkuSupported geo-locations of the provided resource. Můžete vybrat kterékoli z dostupných umístění, ale obvykle dává smysl vybrat, která je blízko vašim uživatelům.You can select any of the available locations, but typically it makes sense to pick one that is close to your users. Obvykle má smysl umístit prostředky, které vzájemně spolupracují ve stejné oblasti.Usually, it also makes sense to place resources that interact with each other in the same region. Většina typů prostředků vyžaduje umístění, ale některé typy (například přiřazení role) nevyžadují umístění.Most resource types require a location, but some types (such as a role assignment) don't require a location. Viz Nastavení umístění prostředku.See Set resource location.
značkytags NeNo Značky, které jsou přidruženy k prostředku.Tags that are associated with the resource. Použijte značky pro logickou organizaci prostředků v rámci vašeho předplatného.Apply tags to logically organize resources across your subscription.
Vyjádřenícomments NeNo Poznámky k dokumentaci prostředků ve vaší šabloně.Your notes for documenting the resources in your template. Další informace najdete v tématu komentáře v šablonách.For more information, see Comments in templates.
Kopírovatcopy NeNo Pokud je potřeba více než jedna instance, počet prostředků, které se mají vytvořit.If more than one instance is needed, the number of resources to create. Výchozí režim je paralelní.The default mode is parallel. Zadejte sériový režim, pokud nechcete, aby se nasadily všechny nebo prostředky.Specify serial mode when you don't want all or the resources to deploy at the same time. Další informace najdete v tématu vytvoření několika instancí prostředků v Azure Resource Manager.For more information, see Create several instances of resources in Azure Resource Manager.
dependsOndependsOn NeNo Prostředky, které musí být nasazeny před nasazením tohoto prostředku.Resources that must be deployed before this resource is deployed. Správce prostředků vyhodnocuje závislosti mezi prostředky a nasadí je ve správném pořadí.Resource Manager evaluates the dependencies between resources and deploys them in the correct order. Pokud nejsou prostředky vzájemně závislé, nasadí se paralelně.When resources aren't dependent on each other, they're deployed in parallel. Hodnota může být čárkami oddělený seznam názvů prostředků nebo jedinečných identifikátorů prostředků.The value can be a comma-separated list of a resource names or resource unique identifiers. Pouze seznam prostředků, které jsou nasazeny v této šabloně.Only list resources that are deployed in this template. Prostředky, které nejsou definované v této šabloně, už musí existovat.Resources that aren't defined in this template must already exist. Vyhněte se přidávání zbytečných závislostí, protože mohou zpomalit nasazení a vytvářet cyklické závislosti.Avoid adding unnecessary dependencies as they can slow your deployment and create circular dependencies. Pokyny k nastavení závislostí najdete v tématu Definování závislostí v šablonách Azure Resource Manager.For guidance on setting dependencies, see Defining dependencies in Azure Resource Manager templates.
propertiesproperties NeNo Nastavení konfigurace specifické pro prostředky.Resource-specific configuration settings. Hodnoty vlastností jsou stejné jako hodnoty, které zadáte v textu žádosti pro operaci REST API (metoda PUT) pro vytvoření prostředku.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. Můžete také zadat pole pro kopírování a vytvořit několik instancí vlastnosti.You can also specify a copy array to create several instances of a property. Chcete-li zjistit dostupné hodnoty, přečtěte si téma Reference k šabloně.To determine available values, see template reference.
SKUsku NeNo Některé prostředky umožňují hodnoty definující SKU, které se mají nasadit.Some resources allow values that define the SKU to deploy. Můžete například zadat typ redundance pro účet úložiště.For example, you can specify the type of redundancy for a storage account.
plněníkind NeNo Některé prostředky umožňují hodnotu definující typ prostředku, který nasadíte.Some resources allow a value that defines the type of resource you deploy. Můžete například zadat typ Cosmos DB, který se má vytvořit.For example, you can specify the type of Cosmos DB to create.
Rozhraníplan NeNo Některé prostředky umožňují hodnoty definující plán, který se má nasadit.Some resources allow values that define the plan to deploy. Můžete například zadat image Marketplace pro virtuální počítač.For example, you can specify the marketplace image for a virtual machine.
prostředkyresources NeNo Podřízené prostředky závislé na definovaném prostředku.Child resources that depend on the resource being defined. Poskytněte jenom typy prostředků, které jsou povolené schématem nadřazeného prostředku.Only provide resource types that are permitted by the schema of the parent resource. Nepředpokládá se závislost na nadřazeném prostředku.Dependency on the parent resource isn't implied. Tuto závislost musíte explicitně definovat.You must explicitly define that dependency. Viz Nastavení názvu a typu pro podřízené prostředky.See Set name and type for child resources.

VýstupyOutputs

V části výstupů zadáte hodnoty, které se vracejí z nasazení.In the Outputs section, you specify values that are returned from deployment. Obvykle vracíte hodnoty z nasazených prostředků.Typically, you return values from resources that were deployed.

Následující příklad ukazuje strukturu definici výstupu:The following example shows the structure of an output definition:

"outputs": {
  "<output-name>" : {
    "condition": "<boolean-value-whether-to-output-value>",
    "type" : "<type-of-output-value>",
    "value": "<output-value-expression>"
  }
}
Název elementuElement name Požaduje seRequired PopisDescription
Název výstupuoutput-name AnoYes Název výstupní hodnoty.Name of the output value. Musí být platný identifikátor jazyka JavaScript.Must be a valid JavaScript identifier.
conditioncondition NeNo Logická hodnota, která označuje, zda je vrácena tato výstupní hodnota.Boolean value that indicates whether this output value is returned. Když trueje hodnota obsažena ve výstupu pro nasazení.When true, the value is included in the output for the deployment. V falsepřípadě je výstupní hodnota pro toto nasazení vynechána.When false, the output value is skipped for this deployment. Není-li zadána, je truepoužita výchozí hodnota.When not specified, the default value is true.
typetype AnoYes Typ výstupní hodnoty.Type of the output value. Výstupní hodnoty podporují stejné typy jako vstupní parametry šablony.Output values support the same types as template input parameters. Pokud zadáte SecureString pro typ výstupu, hodnota se nezobrazí v historii nasazení a nelze ji načíst z jiné šablony.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. Chcete-li použít tajnou hodnotu ve více než jedné šabloně, uložte tajný klíč do Key Vault a odkazujte na tajný kód v souboru parametrů.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. Další informace najdete v tématu použití Azure Key Vault k předání hodnoty zabezpečeného parametru během nasazování.For more information, see Use Azure Key Vault to pass secure parameter value during deployment.
valuevalue AnoYes Výraz jazyka šablony, která je vyhodnocena a vrátila jako výstupní hodnota.Template language expression that is evaluated and returned as output value.

Příklady použití výstupů najdete v tématu výstupy v šabloně Azure Resource Manager.For examples of how to use outputs, see Outputs in Azure Resource Manager template.

Komentáře a metadataComments and metadata

Máte několik možností, jak přidat komentáře a metadata do šablony.You have a few options for adding comments and metadata to your template.

Můžete přidat metadata objekt skoro kdekoli v šabloně.You can add a metadata object almost anywhere in your template. Správce prostředků objekt ignoruje, ale editor JSON vám může zobrazit upozornění, že vlastnost není platná.Resource Manager ignores the object, but your JSON editor may warn you that the property isn't valid. V objektu definujte vlastnosti, které potřebujete.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"
  },

Pro parametrypřidejte metadata objekt s description vlastností.For parameters, add a metadata object with a description property.

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

Při nasazování šablony prostřednictvím portálu se text, který zadáte v popisu, automaticky použije jako Tip pro tento parametr.When deploying the template through the portal, the text you provide in the description is automatically used as a tip for that parameter.

Zobrazit Tip parametru

Pro prostředkypřidejte comments prvek nebo objekt metadat.For resources, add a comments element or a metadata object. Následující příklad ukazuje jak element Comments, tak objekt metadat.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": {}
  }
]

Pro výstupypřidejte objekt metadat do výstupní hodnoty.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"
    }
  },

Do uživatelsky definovaných funkcí nemůžete přidat objekt metadat.You can't add a metadata object to user-defined functions.

Pro vložené komentáře můžete použít // , ale tato syntaxe nefunguje u všech nástrojů.For inline comments, you can use // but this syntax doesn't work with all tools. K nasazení šablony s vloženými komentáři nelze použít rozhraní příkazového řádku Azure CLI.You can't use Azure CLI to deploy the template with inline comments. A nemůžete použít editor šablon portálu pro práci se šablonami s vloženými komentáři.And, you can't use the portal template editor to work on templates with inline comments. Pokud přidáte tento styl komentáře, ujistěte se, že nástroje, které používáte, podporují vložené komentáře JSON.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'))]"
  ],

V VS Code můžete nastavit režim jazyka na JSON s komentáři.In VS Code, you can set the language mode to JSON with comments. Vložené komentáře již nejsou označeny jako neplatné.The inline comments are no longer marked as invalid. Postup změny režimu:To change the mode:

  1. Otevřít výběr jazykového režimu (CTRL + K M)Open language mode selection (Ctrl+K M)

  2. Vyberte JSON s komentáři.Select JSON with Comments.

    Vybrat režim jazyka

Další krokyNext steps