Zrozumienie struktury i składni szablonów Azure Resource ManagerUnderstand the structure and syntax of Azure Resource Manager templates

W tym artykule opisano strukturę szablonu Azure Resource Manager.This article describes the structure of an Azure Resource Manager template. Przedstawia różne sekcje szablonu i właściwości, które są dostępne w tych sekcjach.It presents the different sections of a template and the properties that are available in those sections.

Ten artykuł jest przeznaczony dla użytkowników, którzy mają pewną wiedzę z szablonami Menedżer zasobów.This article is intended for users who have some familiarity with Resource Manager templates. Zawiera szczegółowe informacje na temat struktury szablonu.It provides detailed information about the structure of the template. Jeśli chcesz utworzyć szablon, zobacz Azure Resource Manager templates.If you want an introduction to creating a template, see Azure Resource Manager templates.

Format szablonuTemplate format

W najprostszym strukturze szablon zawiera następujące elementy: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": {  }
}
Nazwa elementuElement name WymaganeRequired OpisDescription
$schema$schema TakYes Lokalizacja pliku schematu JSON opisującego wersję języka szablonu.Location of the JSON schema file that describes the version of the template language.

W przypadku wdrożeń grup zasobów Użyj: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#

W przypadku wdrożeń subskrypcji Użyj: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 TakYes Wersja szablonu (na przykład 1.0.0.0).Version of the template (such as 1.0.0.0). Możesz podać dowolną wartość dla tego elementu.You can provide any value for this element. Użyj tej wartości, aby udokumentować znaczące zmiany w szablonie.Use this value to document significant changes in your template. W przypadku wdrażania zasobów przy użyciu szablonu Ta wartość może być używana do upewnienia się, że odpowiedni szablon jest używany.When deploying resources using the template, this value can be used to make sure that the right template is being used.
apiProfileapiProfile NieNo Wersja interfejsu API, która służy jako kolekcja wersji interfejsu API dla typów zasobów.An API version that serves as a collection of API versions for resource types. Użyj tej wartości, aby uniknąć konieczności określania wersji interfejsu API dla każdego zasobu w szablonie.Use this value to avoid having to specify API versions for each resource in the template. W przypadku określenia wersji profilu interfejsu API i nieokreślenia wersji interfejsu API dla typu zasobu Menedżer zasobów używa wersji interfejsu API dla tego typu zasobu, który jest zdefiniowany w 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.

Właściwość profil interfejsu API jest szczególnie przydatna w przypadku wdrażania szablonu w różnych środowiskach, takich jak Azure Stack i globalny platformę Azure.The API profile property is especially helpful when deploying a template to different environments, such as Azure Stack and global Azure. Użyj wersji profilu interfejsu API, aby upewnić się, że szablon automatycznie używa wersji, które są obsługiwane w obu środowiskach.Use the API profile version to make sure your template automatically uses versions that are supported in both environments. Listę bieżących wersji profilu interfejsu API i wersje interfejsu API zasobów zdefiniowane w profilu znajdują się w temacie profil interfejsu API.For a list of the current API profile versions and the resources API versions defined in the profile, see API Profile.

Aby uzyskać więcej informacji, zobacz śledzenie wersji przy użyciu profilów interfejsu API.For more information, see Track versions using API profiles.
parametersparameters NieNo Wartości, które są dostarczane, gdy wdrożenie jest wykonywane w celu dostosowania wdrożenia zasobów.Values that are provided when deployment is executed to customize resource deployment.
variablesvariables NieNo Wartości, które są używane jako fragmenty JSON w szablonie, aby uprościć wyrażenia języka szablonów.Values that are used as JSON fragments in the template to simplify template language expressions.
functionsfunctions NieNo Funkcje zdefiniowane przez użytkownika, które są dostępne w ramach szablonu.User-defined functions that are available within the template.
resourcesresources TakYes Typy zasobów wdrożone lub zaktualizowane w grupie zasobów lub subskrypcji.Resource types that are deployed or updated in a resource group or subscription.
outputsoutputs NieNo Wartości, które są zwracane po wdrożeniu.Values that are returned after deployment.

Każdy element ma właściwości, które można ustawić.Each element has properties you can set. W tym artykule opisano bardziej szczegółowe sekcje szablonu.This article describes the sections of the template in greater detail.

ParametryParameters

W sekcji Parametry szablonu należy określić, które wartości można wprowadzać podczas wdrażania zasobów.In the parameters section of the template, you specify which values you can input when deploying the resources. W szablonie jest ograniczona do 256 parametrów.You're limited to 256 parameters in a template. Można zmniejszyć liczbę parametrów za pomocą obiektów, które zawierają wiele właściwości.You can reduce the number of parameters by using objects that contain multiple properties.

Dostępne właściwości dla parametru to: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>" 
    }
  }
}
Nazwa elementuElement name WymaganeRequired OpisDescription
Nazwa parametruparameter-name TakYes Nazwa parametru.Name of the parameter. Musi być prawidłowym identyfikatorem języka JavaScript.Must be a valid JavaScript identifier.
typetype TakYes Typ wartości parametru.Type of the parameter value. Dozwolone typy i wartości to String, SecureString, int, bool, Object, secureobjecti Array.The allowed types and values are string, securestring, int, bool, object, secureObject, and array.
defaultValuedefaultValue NieNo Wartość domyślna parametru, jeśli nie podano wartości dla parametru.Default value for the parameter, if no value is provided for the parameter.
allowedValuesallowedValues NieNo Tablica dozwolonych wartości parametru, aby upewnić się, że podano odpowiednią wartość.Array of allowed values for the parameter to make sure that the right value is provided.
minValueminValue NieNo Minimalna wartość parametrów typu int, ta wartość jest dopuszczalna.The minimum value for int type parameters, this value is inclusive.
maxValuemaxValue NieNo Maksymalna wartość parametrów typu int, ta wartość jest dopuszczalna.The maximum value for int type parameters, this value is inclusive.
minLengthminLength NieNo Minimalna długość dla parametrów typu String, Secure String i Array, ta wartość jest włącznie.The minimum length for string, secure string, and array type parameters, this value is inclusive.
maxLengthmaxLength NieNo Maksymalna długość parametrów ciągu, bezpiecznego ciągu i typu tablicy, ta wartość jest włącznie.The maximum length for string, secure string, and array type parameters, this value is inclusive.
descriptiondescription NieNo Opis parametru, który jest wyświetlany użytkownikom w portalu.Description of the parameter that is displayed to users through the portal. Aby uzyskać więcej informacji, zobacz Komentarze w szablonach.For more information, see Comments in templates.

Aby uzyskać przykłady użycia parametrów, zobacz Parametry w szablonach Azure Resource Manager.For examples of how to use parameters, see Parameters in Azure Resource Manager templates.

ZmienneVariables

W sekcji zmienne można skonstruować wartości, które mogą być używane w całym szablonie.In the variables section, you construct values that can be used throughout your template. Nie musisz definiować zmiennych, ale często upraszczamy szablon przez zredukowanie złożonych wyrażeń.You don't need to define variables, but they often simplify your template by reducing complex expressions.

W poniższym przykładzie przedstawiono dostępne opcje definiowania zmiennej: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>
    }
  ]
}

Aby uzyskać informacje o copy używaniu do tworzenia kilku wartości dla zmiennej, zobacz zmienna iteracja.For information about using copy to create several values for a variable, see Variable iteration.

Aby zapoznać się z przykładami użycia zmiennych, zobacz zmienne w szablonie Azure Resource Manager.For examples of how to use variables, see Variables in Azure Resource Manager template.

FunkcjeFunctions

W ramach szablonu można tworzyć własne funkcje.Within your template, you can create your own functions. Te funkcje są dostępne do użycia w szablonie.These functions are available for use in your template. Zwykle definiuje się wyrażenie złożone, które nie ma być powtarzane w całym szablonie.Typically, you define complicated expression that you don't want to repeat throughout your template. Funkcje zdefiniowane przez użytkownika można utworzyć na podstawie wyrażeń i funkcji obsługiwanych w szablonach.You create the user-defined functions from expressions and functions that are supported in templates.

Podczas definiowania funkcji użytkownika istnieją pewne ograniczenia:When defining a user function, there are some restrictions:

  • Funkcja nie może uzyskać dostępu do zmiennych.The function can't access variables.
  • Funkcja może używać tylko parametrów, które są zdefiniowane w funkcji.The function can only use parameters that are defined in the function. Gdy używana jest Funkcja Parameters w funkcji zdefiniowanej przez użytkownika, są ograniczone do parametrów tej funkcji.When you use the parameters function within a user-defined function, you're restricted to the parameters for that function.
  • Funkcja nie może wywoływać innych funkcji zdefiniowanych przez użytkownika.The function can't call other user-defined functions.
  • Funkcja nie może używać funkcji Reference.The function can't use the reference function.
  • Parametry funkcji nie mogą mieć wartości domyślnych.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>"
        }
      }
    }
  }
],
Nazwa elementuElement name WymaganeRequired OpisDescription
— przestrzeń nazwnamespace TakYes Przestrzeń nazw dla funkcji niestandardowych.Namespace for the custom functions. Użyj, aby uniknąć konfliktu nazw z funkcjami szablonu.Use to avoid naming conflicts with template functions.
Nazwa funkcjifunction-name TakYes Nazwa funkcji niestandardowej.Name of the custom function. Podczas wywoływania funkcji Połącz nazwę funkcji z przestrzenią nazw.When calling the function, combine the function name with the namespace. Na przykład, aby wywołać funkcję o nazwie uniqueName w przestrzeni nazw contoso, użyj "[contoso.uniqueName()]".For example, to call a function named uniqueName in the namespace contoso, use "[contoso.uniqueName()]".
Nazwa parametruparameter-name NieNo Nazwa parametru, który ma być używany w funkcji niestandardowej.Name of the parameter to be used within the custom function.
wartość parametru-valueparameter-value NieNo Typ wartości parametru.Type of the parameter value. Dozwolone typy i wartości to String, SecureString, int, bool, Object, secureobjecti Array.The allowed types and values are string, securestring, int, bool, object, secureObject, and array.
Typ danych wyjściowychoutput-type TakYes Typ wartości danych wyjściowych.Type of the output value. Wartości wyjściowe obsługują te same typy jak parametry wejściowe funkcji.Output values support the same types as function input parameters.
Wartość wyjściowaoutput-value TakYes Wyrażenie języka szablonu, które jest oceniane i zwracane przez funkcję.Template language expression that is evaluated and returned from the function.

Przykłady korzystania z funkcji niestandardowych można znaleźć w temacie Funkcje zdefiniowane przez użytkownika w szablonie Azure Resource Manager.For examples of how to use custom functions, see User-defined functions in Azure Resource Manager template.

ZasobyResources

W sekcji Resources (zasoby) zdefiniujesz wdrożone lub zaktualizowane zasoby.In the resources section, you define the resources that are deployed or updated.

Należy zdefiniować zasoby o następującej strukturze: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>"
      ]
  }
]
Nazwa elementuElement name WymaganeRequired OpisDescription
conditioncondition NieNo Wartość logiczna wskazująca, czy zasób zostanie zainicjowany podczas tego wdrożenia.Boolean value that indicates whether the resource will be provisioned during this deployment. Gdy truezasób jest tworzony podczas wdrażania.When true, the resource is created during deployment. Gdy falsezasób jest pomijany dla tego wdrożenia.When false, the resource is skipped for this deployment. Zobacz warunek.See condition.
apiVersionapiVersion TakYes Wersja interfejsu API REST do użycia podczas tworzenia zasobu.Version of the REST API to use for creating the resource. Aby określić dostępne wartości, zobacz Dokumentacja szablonu.To determine available values, see template reference.
typetype TakYes Typ zasobu.Type of the resource. Ta wartość jest kombinacją przestrzeni nazw dostawcy zasobów i typu zasobu (np . Microsoft. Storage/storageAccounts).This value is a combination of the namespace of the resource provider and the resource type (such as Microsoft.Storage/storageAccounts). Aby określić dostępne wartości, zobacz Dokumentacja szablonu.To determine available values, see template reference. W przypadku zasobu podrzędnego format typu zależy od tego, czy jest on zagnieżdżony w obrębie zasobu nadrzędnego, czy zdefiniowany poza zasobem nadrzędnym.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. Zobacz Set Name i Type dla zasobów podrzędnych.See Set name and type for child resources.
namename TakYes Nazwa zasobu.Name of the resource. Nazwa musi następować zgodnie z ograniczeniami składnika URI zdefiniowanymi w RFC3986.The name must follow URI component restrictions defined in RFC3986. Usługi platformy Azure, które uwidaczniają nazwę zasobu podmiotom zewnętrznym, sprawdzają poprawność nazwy, aby upewnić się, że nie jest próbą sfałszowania innej tożsamości.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. W przypadku zasobu podrzędnego format nazwy zależy od tego, czy jest on zagnieżdżony w obrębie zasobu nadrzędnego, czy zdefiniowany poza zasobem nadrzędnym.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. Zobacz Set Name i Type dla zasobów podrzędnych.See Set name and type for child resources.
locationlocation RóżnaVaries Obsługiwane lokalizacje geograficzne podanego zasobu.Supported geo-locations of the provided resource. Można wybrać dowolną z dostępnych lokalizacji, ale zazwyczaj warto ją wybrać blisko użytkowników.You can select any of the available locations, but typically it makes sense to pick one that is close to your users. Zwykle warto również umieścić zasoby, które współpracują ze sobą w tym samym regionie.Usually, it also makes sense to place resources that interact with each other in the same region. Większość typów zasobów wymaga lokalizacji, ale niektóre typy (takie jak przypisanie roli) nie wymagają lokalizacji.Most resource types require a location, but some types (such as a role assignment) don't require a location. Zobacz Ustawianie lokalizacji zasobu.See Set resource location.
tagstags NieNo Tagi, które są skojarzone z zasobem.Tags that are associated with the resource. Zastosuj Tagi, aby logicznie organizować zasoby w ramach subskrypcji.Apply tags to logically organize resources across your subscription.
Komentarzcomments NieNo Twoje notatki umożliwiające dokumentowanie zasobów w szablonie.Your notes for documenting the resources in your template. Aby uzyskać więcej informacji, zobacz Komentarze w szablonach.For more information, see Comments in templates.
kopiujcopy NieNo Jeśli potrzebujesz więcej niż jednego wystąpienia, liczba zasobów do utworzenia.If more than one instance is needed, the number of resources to create. Domyślny tryb jest równoległy.The default mode is parallel. Określ tryb seryjny, gdy nie chcesz, aby wszystkie lub zasoby zostały wdrożone w tym samym czasie.Specify serial mode when you don't want all or the resources to deploy at the same time. Aby uzyskać więcej informacji, zobacz Tworzenie kilku wystąpień zasobów w Azure Resource Manager.For more information, see Create several instances of resources in Azure Resource Manager.
dependsOndependsOn NieNo Zasoby, które muszą zostać wdrożone przed wdrożeniem tego zasobu.Resources that must be deployed before this resource is deployed. Menedżer zasobów oblicza zależności między zasobami i wdraża je w odpowiedniej kolejności.Resource Manager evaluates the dependencies between resources and deploys them in the correct order. Gdy zasoby nie są od siebie zależne, są wdrażane równolegle.When resources aren't dependent on each other, they're deployed in parallel. Wartość może być rozdzielaną przecinkami listą nazw zasobów lub unikatowych identyfikatorów zasobów.The value can be a comma-separated list of a resource names or resource unique identifiers. Tylko zasoby, które są wdrożone w tym szablonie.Only list resources that are deployed in this template. Zasoby, które nie są zdefiniowane w tym szablonie, muszą już istnieć.Resources that aren't defined in this template must already exist. Należy unikać dodawania niepotrzebnych zależności, ponieważ mogą one spowalniać wdrożenie i tworzyć zależności cykliczne.Avoid adding unnecessary dependencies as they can slow your deployment and create circular dependencies. Aby uzyskać wskazówki dotyczące ustawiania zależności, zobacz Definiowanie zależności w szablonach Azure Resource Manager.For guidance on setting dependencies, see Defining dependencies in Azure Resource Manager templates.
propertiesproperties NieNo Ustawienia konfiguracji dotyczące zasobów.Resource-specific configuration settings. Wartości właściwości są takie same jak wartości podane w treści żądania dla operacji interfejsu API REST (Metoda PUT), aby utworzyć zasób.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. Możesz również określić tablicę kopiowania, aby utworzyć kilka wystąpień właściwości.You can also specify a copy array to create several instances of a property. Aby określić dostępne wartości, zobacz Dokumentacja szablonu.To determine available values, see template reference.
skusku NieNo Niektóre zasoby umożliwiają wartości, które definiują jednostkę SKU do wdrożenia.Some resources allow values that define the SKU to deploy. Na przykład można określić typ nadmiarowości dla konta magazynu.For example, you can specify the type of redundancy for a storage account.
Naturkind NieNo Niektóre zasoby umożliwiają wartości, która definiuje typ wdrażanego zasobu.Some resources allow a value that defines the type of resource you deploy. Na przykład można określić typ Cosmos DB, który ma zostać utworzony.For example, you can specify the type of Cosmos DB to create.
zamierzaplan NieNo Niektóre zasoby umożliwiają wartości definiujące plan do wdrożenia.Some resources allow values that define the plan to deploy. Na przykład można określić obraz z witryny Marketplace dla maszyny wirtualnej.For example, you can specify the marketplace image for a virtual machine.
zasobyresources NieNo Zasoby podrzędne, które są zależne od definiowanego zasobu.Child resources that depend on the resource being defined. Podaj tylko typy zasobów, które są dozwolone przez schemat zasobu nadrzędnego.Only provide resource types that are permitted by the schema of the parent resource. Nie jest implikowana zależność od zasobu nadrzędnego.Dependency on the parent resource isn't implied. Należy jawnie zdefiniować tę zależność.You must explicitly define that dependency. Zobacz Set Name i Type dla zasobów podrzędnych.See Set name and type for child resources.

outputsOutputs

W sekcji danych wyjściowych należy określić wartości, które są zwracane z wdrożenia.In the Outputs section, you specify values that are returned from deployment. Zazwyczaj zwracane są wartości z zasobów, które zostały wdrożone.Typically, you return values from resources that were deployed.

Poniższy przykład pokazuje strukturę definicję danych wyjściowych: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>"
  }
}
Nazwa elementuElement name WymaganeRequired OpisDescription
Nazwa wyjściowaoutput-name TakYes Nazwa wartości danych wyjściowych.Name of the output value. Musi być prawidłowym identyfikatorem języka JavaScript.Must be a valid JavaScript identifier.
conditioncondition NieNo Wartość logiczna wskazująca, czy ta wartość wyjściowa jest zwracana.Boolean value that indicates whether this output value is returned. Gdy truewartość jest uwzględniona w danych wyjściowych dla wdrożenia.When true, the value is included in the output for the deployment. Gdy falsewartość wyjściowa jest pomijana dla tego wdrożenia.When false, the output value is skipped for this deployment. Gdy nie zostanie określony, wartość domyślna to true.When not specified, the default value is true.
typetype YesYes Typ wartości danych wyjściowych.Type of the output value. Wartości wyjściowe obsługują te same typy jako parametrów wejściowych szablonu.Output values support the same types as template input parameters. W przypadku określenia elementu SecureString dla typu danych wyjściowych wartość nie jest wyświetlana w historii wdrożenia i nie można jej pobrać z innego szablonu.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. Aby użyć wartości klucza tajnego w więcej niż jednym szablonie, należy zapisać klucz tajny w Key Vault i odwołać się do wpisu tajnego w pliku parametrów.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. Aby uzyskać więcej informacji, zobacz używanie Azure Key Vault do przekazywania zabezpieczonej wartości parametrów podczas wdrażania.For more information, see Use Azure Key Vault to pass secure parameter value during deployment.
valuevalue YesYes Wyrażenie języka szablonu, który jest obliczany i zwracany, jako wartość danych wyjściowych.Template language expression that is evaluated and returned as output value.

Aby zapoznać się z przykładami sposobu korzystania z danych wyjściowych, zobacz dane wyjściowe w szablonie Azure Resource Manager.For examples of how to use outputs, see Outputs in Azure Resource Manager template.

Komentarze i metadaneComments and metadata

Istnieje kilka opcji dodawania komentarzy i metadanych do szablonu.You have a few options for adding comments and metadata to your template.

metadata Obiekt można dodać niemal w dowolnym miejscu w szablonie.You can add a metadata object almost anywhere in your template. Menedżer zasobów ignoruje obiekt, ale Edytor JSON może ostrzec, że właściwość jest nieprawidłowa.Resource Manager ignores the object, but your JSON editor may warn you that the property isn't valid. W obiekcie Zdefiniuj potrzebne właściwości.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"
  },

Dla parametrówDodaj metadata obiekt z description właściwością.For parameters, add a metadata object with a description property.

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

Podczas wdrażania szablonu za pomocą portalu, tekst w opisie jest automatycznie używany jako Porada dla tego parametru.When deploying the template through the portal, the text you provide in the description is automatically used as a tip for that parameter.

Pokaż poradę dotyczącą parametrów

W przypadku zasobówDodaj comments element lub obiekt metadanych.For resources, add a comments element or a metadata object. W poniższym przykładzie pokazano zarówno element komentarzy, jak i obiekt metadanych.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": {}
  }
]

Wprzypadku danych wyjściowych Dodaj obiekt metadanych do wartości wyjściowej.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"
    }
  },

Nie można dodać obiektu metadanych do funkcji zdefiniowanych przez użytkownika.You can't add a metadata object to user-defined functions.

W przypadku komentarzy wbudowanych można użyć // , ale ta składnia nie działa z wszystkimi narzędziami.For inline comments, you can use // but this syntax doesn't work with all tools. Nie można użyć interfejsu wiersza polecenia platformy Azure, aby wdrożyć szablon z wbudowanymi komentarzami.You can't use Azure CLI to deploy the template with inline comments. Nie można używać edytora szablonów portalu do pracy nad szablonami z wbudowanymi komentarzami.And, you can't use the portal template editor to work on templates with inline comments. W przypadku dodania tego stylu komentarza upewnij się, że narzędzia, z których korzystasz, obsługują wbudowane Komentarze 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'))]"
  ],

W VS Code można ustawić tryb języka na JSON z komentarzami.In VS Code, you can set the language mode to JSON with comments. Komentarze w tekście nie są już oznaczone jako nieprawidłowe.The inline comments are no longer marked as invalid. Aby zmienić tryb:To change the mode:

  1. Otwórz zaznaczenie trybu języka (Ctrl + K M)Open language mode selection (Ctrl+K M)

  2. Wybierz pozycję JSON z komentarzami.Select JSON with Comments.

    Wybierz tryb języka

Następne krokiNext steps