Noções básicas de estrutura e sintaxe dos modelos do Azure Resource ManagerUnderstand the structure and syntax of Azure Resource Manager templates

Este artigo descreve a estrutura de um modelo do Azure Resource Manager.This article describes the structure of an Azure Resource Manager template. Ele apresenta as diferentes seções de um modelo e as propriedades que estão disponíveis nessas seções.It presents the different sections of a template and the properties that are available in those sections.

Este artigo destina-se a usuários que têm alguma familiaridade com modelos do Resource Manager.This article is intended for users who have some familiarity with Resource Manager templates. Ele fornece informações detalhadas sobre a estrutura do modelo.It provides detailed information about the structure of the template. Se você quiser uma introdução à criação de um modelo, consulte modelos de Azure Resource Manager.If you want an introduction to creating a template, see Azure Resource Manager templates.

Formato de modeloTemplate format

Em sua estrutura mais simples, um modelo tem os seguintes elementos:In its simplest structure, a template has the following elements:

{
  "$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#",
  "contentVersion": "",
  "apiProfile": "",
  "parameters": {  },
  "variables": {  },
  "functions": [  ],
  "resources": [  ],
  "outputs": {  }
}
Nome do elementoElement name NecessárioRequired DescriçãoDescription
$schema$schema SimYes Local do arquivo de esquema JSON que descreve a versão da linguagem do modelo.Location of the JSON schema file that describes the version of the template language.

Para implantações de grupo de recursos, use: 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#

Para implantações de assinatura, use: 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 SimYes Versão do modelo (como 1.0.0.0).Version of the template (such as 1.0.0.0). Você pode fornecer qualquer valor para esse elemento.You can provide any value for this element. Use esse valor para documentar alterações significativas em seu modelo.Use this value to document significant changes in your template. Ao implantar recursos com o modelo, esse valor pode ser usado para garantir que o modelo certo esteja sendo usado.When deploying resources using the template, this value can be used to make sure that the right template is being used.
apiProfileapiProfile NãoNo Uma versão de API que serve como uma coleção de versões de API para tipos de recursos.An API version that serves as a collection of API versions for resource types. Use esse valor para evitar a especificação de versões de API para cada recurso no modelo.Use this value to avoid having to specify API versions for each resource in the template. Quando você especifica uma versão de perfil de API e não especifica uma versão de API para o tipo de recurso, o Resource Manager usa a versão de API para esse tipo de recurso que é definido no perfil.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.

A propriedade de perfil de API é especialmente útil ao implantar um modelo em ambientes diferentes, como Azure Stack e o Azure global.The API profile property is especially helpful when deploying a template to different environments, such as Azure Stack and global Azure. Use a versão do perfil de API para certificar-se de que o modelo usa automaticamente as versões com suporte em ambos os ambientes.Use the API profile version to make sure your template automatically uses versions that are supported in both environments. Para obter uma lista das versões de perfil de API atuais e as versões de API de recursos definidas no perfil, consulte perfil de API.For a list of the current API profile versions and the resources API versions defined in the profile, see API Profile.

Para obter mais informações, consulte rastrear versões usando perfis de API.For more information, see Track versions using API profiles.
parametersparameters NãoNo Valores que são fornecidos quando a implantação é executada para personalizar a implantação dos recursos.Values that are provided when deployment is executed to customize resource deployment.
variablesvariables NãoNo Valores que são usados como fragmentos JSON no modelo para simplificar expressões de linguagem do modelo.Values that are used as JSON fragments in the template to simplify template language expressions.
funçõesfunctions NãoNo Funções definidas pelo usuário que estão disponíveis no modelo.User-defined functions that are available within the template.
resourcesresources SimYes Tipos de recursos que são implantados ou atualizados em um grupo de recursos ou assinatura.Resource types that are deployed or updated in a resource group or subscription.
produzoutputs NãoNo Valores que são retornados após a implantação.Values that are returned after deployment.

Cada elemento tem propriedades que você pode definir.Each element has properties you can set. Esse artigo descreve as seções do modelo com mais detalhes.This article describes the sections of the template in greater detail.

ParâmetrosParameters

Na seção de parâmetros do modelo, você deve especificar os valores que você pode inserir ao implantar os recursos.In the parameters section of the template, you specify which values you can input when deploying the resources. Você está limitado a 256 parâmetros em um modelo.You're limited to 256 parameters in a template. Você pode reduzir o número de parâmetros usando objetos que contêm várias propriedades.You can reduce the number of parameters by using objects that contain multiple properties.

As propriedades disponíveis para um parâmetro são:The available properties for a parameter are:

"parameters": {
  "<parameter-name>" : {
    "type" : "<type-of-parameter-value>",
    "defaultValue": "<default-value-of-parameter>",
    "allowedValues": [ "<array-of-allowed-values>" ],
    "minValue": <minimum-value-for-int>,
    "maxValue": <maximum-value-for-int>,
    "minLength": <minimum-length-for-string-or-array>,
    "maxLength": <maximum-length-for-string-or-array-parameters>,
    "metadata": {
      "description": "<description-of-the parameter>" 
    }
  }
}
Nome do elementoElement name NecessárioRequired DescriçãoDescription
nome do parâmetroparameter-name SimYes Nome do parâmetro.Name of the parameter. Deve ser um identificador JavaScript válido.Must be a valid JavaScript identifier.
typetype SimYes Tipo do valor do parâmetro.Type of the parameter value. Os valores e tipos permitidos são cadeia de caracteres, securestring, int, bool, objeto, secureObject, e matriz.The allowed types and values are string, securestring, int, bool, object, secureObject, and array. Consulte tipos de dados.See Data types.
defaultValuedefaultValue NãoNo Valor padrão do parâmetro, se nenhum valor for fornecido para o parâmetro.Default value for the parameter, if no value is provided for the parameter.
allowedValuesallowedValues NãoNo Matriz de valores permitidos para o parâmetro para garantir que o valor correto seja fornecido.Array of allowed values for the parameter to make sure that the right value is provided.
minValueminValue NãoNo O valor mínimo para parâmetros de tipo int, esse valor é inclusivo.The minimum value for int type parameters, this value is inclusive.
maxValuemaxValue NãoNo O valor máximo para parâmetros de tipo int, esse valor é inclusivo.The maximum value for int type parameters, this value is inclusive.
minLengthminLength NãoNo O tamanho mínimo para parâmetros de tipo de matriz, cadeia de caracteres segura e cadeia de caracteres, esse valor é inclusivo.The minimum length for string, secure string, and array type parameters, this value is inclusive.
maxLengthmaxLength NãoNo O tamanho máximo para parâmetros de tipo de matriz, cadeia de caracteres segura e cadeia de caracteres, esse valor é inclusivo.The maximum length for string, secure string, and array type parameters, this value is inclusive.
descriptiondescription NãoNo Descrição do parâmetro exibido aos usuários pelo portal.Description of the parameter that is displayed to users through the portal. Para obter mais informações, confira Comentários em modelos.For more information, see Comments in templates.

Para obter exemplos de como usar parâmetros, consulte parâmetros em modelos de Azure Resource Manager.For examples of how to use parameters, see Parameters in Azure Resource Manager templates.

Tipos de dadosData types

Para números inteiros passados como parâmetros embutidos, o intervalo de valores pode ser limitado pelo SDK ou pela ferramenta de linha de comando usada para implantação.For integers passed as inline parameters, the range of values may be limited by the SDK or command-line tool you use for deployment. Por exemplo, ao usar o PowerShell para implantar um modelo, os tipos de inteiros podem variar de-2147483648 a 2147483647.For example, when using PowerShell to deploy a template, integer types can range from -2147483648 to 2147483647. Para evitar essa limitação, especifique valores inteiros grandes em um arquivo de parâmetro.To avoid this limitation, specify large integer values in a parameter file. Os tipos de recurso aplicam seus próprios limites para propriedades de inteiros.Resource types apply their own limits for integer properties.

Ao especificar valores Boolianos e inteiros em seu modelo, não coloque o valor entre aspas.When specifying boolean and integer values in your template, don't surround the value with quotation marks. Comece e termine valores de cadeia de caracteres com aspas duplas.Start and end string values with double quotation marks.

Os objetos começam com uma chave esquerda e terminam com uma chave direita.Objects start with a left brace and end with a right brace. As matrizes começam com um colchete esquerdo e terminam com um colchete direito.Arrays start with a left bracket and end with a right bracket.

Cadeias de caracteres seguras e objetos seguros não podem ser lidos após a implantação de recursos.Secure strings and secure objects can't be read after resource deployment.

Para obter exemplos de formatação de tipos de dados, consulte formatos de tipo de parâmetro.For samples of formatting data types, see Parameter type formats.

VariáveisVariables

Na seção de variáveis, você constrói valores que podem ser usados em todo o seu modelo.In the variables section, you construct values that can be used throughout your template. Você não precisa definir variáveis, mas normalmente elas simplificam seu modelo reduzindo expressões complexas.You don't need to define variables, but they often simplify your template by reducing complex expressions.

O exemplo a seguir mostra as opções disponíveis para definir uma variável: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>
    }
  ]
}

Para obter informações sobre copy como usar o para criar vários valores para uma variável, consulte Iteration Variable.For information about using copy to create several values for a variable, see Variable iteration.

Para obter exemplos de como usar variáveis, consulte variáveis no modelo Azure Resource Manager.For examples of how to use variables, see Variables in Azure Resource Manager template.

FunçõesFunctions

Dentro de seu modelo, você pode criar suas próprias funções.Within your template, you can create your own functions. Essas funções estão disponíveis para uso em seu modelo.These functions are available for use in your template. Normalmente, você define expressões complicadas que não deseja repetir em todo o modelo.Typically, you define complicated expressions that you don't want to repeat throughout your template. Você cria as funções definidas pelo usuário de expressões e funções que têm suporte em modelos.You create the user-defined functions from expressions and functions that are supported in templates.

Ao definir uma função de usuário, há algumas restrições:When defining a user function, there are some restrictions:

  • A função não pode acessar variáveis.The function can't access variables.
  • A função só pode usar os parâmetros que são definidos na função.The function can only use parameters that are defined in the function. Quando você usa a função Parameters em uma função definida pelo usuário, você está restrito aos parâmetros para essa função.When you use the parameters function within a user-defined function, you're restricted to the parameters for that function.
  • A função não pode chamar outras funções definidas pelo usuário.The function can't call other user-defined functions.
  • A função não pode usar a função de referência.The function can't use the reference function.
  • Os parâmetros para a função não podem ter valores padrão.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>"
        }
      }
    }
  }
],
Nome do elementoElement name NecessárioRequired DescriçãoDescription
namespacenamespace SimYes Namespace para as funções personalizadas.Namespace for the custom functions. Use para evitar conflitos de nomenclatura com funções de modelo.Use to avoid naming conflicts with template functions.
nome da funçãofunction-name SimYes Nome da função personalizada.Name of the custom function. Ao chamar a função, combine o nome da função com o namespace.When calling the function, combine the function name with the namespace. Por exemplo, para chamar uma função chamada uniqueName no namespace contoso, use "[contoso.uniqueName()]".For example, to call a function named uniqueName in the namespace contoso, use "[contoso.uniqueName()]".
nome do parâmetroparameter-name NãoNo Nome do parâmetro a ser usado na função personalizada.Name of the parameter to be used within the custom function.
valor do parâmetroparameter-value NãoNo Tipo do valor do parâmetro.Type of the parameter value. Os valores e tipos permitidos são cadeia de caracteres, securestring, int, bool, objeto, secureObject, e matriz.The allowed types and values are string, securestring, int, bool, object, secureObject, and array.
tipo de saídaoutput-type SimYes Tipo do valor de saída.Type of the output value. Os valores de saída dão suporte aos mesmos tipos de parâmetros de entrada de função.Output values support the same types as function input parameters.
saída-valoroutput-value SimYes Expressão de linguagem do modelo que é avaliada e retornada da função.Template language expression that is evaluated and returned from the function.

Para obter exemplos de como usar funções personalizadas, consulte funções definidas pelo usuário no modelo Azure Resource Manager.For examples of how to use custom functions, see User-defined functions in Azure Resource Manager template.

RecursosResources

Na seção de recursos, você define os recursos que são implantados ou atualizados.In the resources section, you define the resources that are deployed or updated.

Você define recursos com a seguinte estrutura:You define resources with the following structure:

"resources": [
  {
      "condition": "<true-to-deploy-this-resource>",
      "apiVersion": "<api-version-of-resource>",
      "type": "<resource-provider-namespace/resource-type-name>",
      "name": "<name-of-the-resource>",
      "location": "<location-of-resource>",
      "tags": {
          "<tag-name1>": "<tag-value1>",
          "<tag-name2>": "<tag-value2>"
      },
      "comments": "<your-reference-notes>",
      "copy": {
          "name": "<name-of-copy-loop>",
          "count": <number-of-iterations>,
          "mode": "<serial-or-parallel>",
          "batchSize": <number-to-deploy-serially>
      },
      "dependsOn": [
          "<array-of-related-resource-names>"
      ],
      "properties": {
          "<settings-for-the-resource>",
          "copy": [
              {
                  "name": ,
                  "count": ,
                  "input": {}
              }
          ]
      },
      "sku": {
          "name": "<sku-name>",
          "tier": "<sku-tier>",
          "size": "<sku-size>",
          "family": "<sku-family>",
          "capacity": <sku-capacity>
      },
      "kind": "<type-of-resource>",
      "plan": {
          "name": "<plan-name>",
          "promotionCode": "<plan-promotion-code>",
          "publisher": "<plan-publisher>",
          "product": "<plan-product>",
          "version": "<plan-version>"
      },
      "resources": [
          "<array-of-child-resources>"
      ]
  }
]
Nome do elementoElement name NecessárioRequired DescriçãoDescription
condiçãocondition NãoNo Valor booliano que indica se o recurso será provisionado durante esta implantação.Boolean value that indicates whether the resource will be provisioned during this deployment. Quando for true, o recurso será criado durante a implantação.When true, the resource is created during deployment. Quando false, o recurso será ignorado para essa implantação.When false, the resource is skipped for this deployment. Consulte a condição.See condition.
apiVersionapiVersion SimYes Versão da API REST a ser usada para criar o recurso.Version of the REST API to use for creating the resource. Para determinar os valores disponíveis, consulte referência de modelo.To determine available values, see template reference.
typetype SimYes Tipo do recurso.Type of the resource. Esse valor é uma combinação do namespace do provedor de recursos e do tipo de recurso (como Microsoft.Storage/storageAccounts).This value is a combination of the namespace of the resource provider and the resource type (such as Microsoft.Storage/storageAccounts). Para determinar os valores disponíveis, consulte referência de modelo.To determine available values, see template reference. Para um recurso filho, o formato do tipo depende de se ele está aninhado dentro do recurso pai ou definido fora do recurso pai.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. Confira Definir o nome e o tipo de recursos filho.See Set name and type for child resources.
namename SimYes Nome do recurso.Name of the resource. O nome deve seguir as restrições de componente URI definidas em RFC3986.The name must follow URI component restrictions defined in RFC3986. Os serviços do Azure que expõem o nome do recurso a partes externas validam o nome para verificar se não há uma tentativa de falsificar outra identidade.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. Para um recurso filho, o formato do nome depende se ele está aninhado dentro do recurso pai ou definido fora do recurso pai.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. Confira Definir o nome e o tipo de recursos filho.See Set name and type for child resources.
localizaçãolocation VariaVaries Locais geográficos com suporte do recurso fornecido.Supported geo-locations of the provided resource. Você pode selecionar qualquer uma das localizações disponíveis, mas geralmente faz sentido escolher um que esteja perto de seus usuários.You can select any of the available locations, but typically it makes sense to pick one that is close to your users. Normalmente, também faz sentido colocar recursos que interagem entre si na mesma região.Usually, it also makes sense to place resources that interact with each other in the same region. A maioria dos tipos de recurso exige um local, ao contrário de alguns deles (como uma atribuição de função).Most resource types require a location, but some types (such as a role assignment) don't require a location. Consulte definir local do recurso.See Set resource location.
marcastags NãoNo Marcas que são associadas ao recurso.Tags that are associated with the resource. Aplique marcas para organizar recursos logicamente em toda a sua assinatura.Apply tags to logically organize resources across your subscription.
comentárioscomments NãoNo Suas anotações para documentar os recursos no modelo.Your notes for documenting the resources in your template. Para obter mais informações, confira Comentários em modelos.For more information, see Comments in templates.
copiarcopy NãoNo Se mais de uma instância for necessária, o número de recursos a serem criados.If more than one instance is needed, the number of resources to create. O modo padrão é paralelo.The default mode is parallel. Especifica o modo serial quando você não deseja que todos os recursos sejam implantados ao mesmo tempo.Specify serial mode when you don't want all or the resources to deploy at the same time. Para obter mais informações, consulte Criar várias instâncias de recursos no Azure Resource Manager.For more information, see Create several instances of resources in Azure Resource Manager.
dependsOndependsOn NãoNo Recursos que devem ser implantados antes deste recurso.Resources that must be deployed before this resource is deployed. O Gerenciador de Recursos avalia as dependências entre os recursos e os implanta na ordem correta.Resource Manager evaluates the dependencies between resources and deploys them in the correct order. Quando os recursos não dependem uns dos outros, eles são implantados em paralelo.When resources aren't dependent on each other, they're deployed in parallel. O valor pode ser uma lista separada por vírgulas de nomes de recursos ou identificadores exclusivos de recursos.The value can be a comma-separated list of a resource names or resource unique identifiers. Somente lista recursos que são implantados neste modelo.Only list resources that are deployed in this template. Os recursos que não são definidos neste modelo já devem existir.Resources that aren't defined in this template must already exist. Evite adicionar dependências desnecessárias, pois elas podem reduzir sua implantação e criar dependências circulares.Avoid adding unnecessary dependencies as they can slow your deployment and create circular dependencies. Para obter orientação sobre como configurar as dependências, confira Definir as dependências nos modelos do Azure Resource Manager.For guidance on setting dependencies, see Defining dependencies in Azure Resource Manager templates.
propertiesproperties NãoNo Definições de configuração específicas do recurso.Resource-specific configuration settings. Os valores para as propriedades são iguais aos valores que você fornece no corpo da solicitação para a operação da API REST (método PUT) para criar o recurso.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. Especifique também uma matriz de cópia para criar várias instâncias de uma propriedade.You can also specify a copy array to create several instances of a property. Para determinar os valores disponíveis, consulte referência de modelo.To determine available values, see template reference.
SKUsku NãoNo Alguns recursos permitem que os valores definam a SKU para implantar.Some resources allow values that define the SKU to deploy. Por exemplo, você pode especificar o tipo de redundância para uma conta de armazenamento.For example, you can specify the type of redundancy for a storage account.
tipokind NãoNo Alguns recursos permitem que um valor defina o tipo de recurso que você implantar.Some resources allow a value that defines the type of resource you deploy. Por exemplo, você pode especificar o tipo de Cosmos DB para criar.For example, you can specify the type of Cosmos DB to create.
planoplan NãoNo Alguns recursos permitem que um valor defina o plano para implantar.Some resources allow values that define the plan to deploy. Por exemplo, você pode especificar a imagem do marketplace para uma máquina virtual.For example, you can specify the marketplace image for a virtual machine.
recursosresources NãoNo Recursos filho que dependem do recurso que está sendo definido.Child resources that depend on the resource being defined. Forneça apenas os tipos de recurso permitidos pelo esquema do recurso pai.Only provide resource types that are permitted by the schema of the parent resource. A dependência do recurso pai não é implícita.Dependency on the parent resource isn't implied. Você deve definir explicitamente essa dependência.You must explicitly define that dependency. Confira Definir o nome e o tipo de recursos filho.See Set name and type for child resources.

SaídasOutputs

Na seção de saídas, você especifica valores que são retornados da implantação.In the Outputs section, you specify values that are returned from deployment. Normalmente, você retorna valores de recursos que foram implantados.Typically, you return values from resources that were deployed.

O exemplo a seguir mostra a estrutura de uma definição de saída: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>"
  }
}
Nome do elementoElement name NecessárioRequired DescriçãoDescription
nome de saídaoutput-name SimYes Nome do valor de saída.Name of the output value. Deve ser um identificador JavaScript válido.Must be a valid JavaScript identifier.
condiçãocondition NãoNo Valor booliano que indica se esse valor de saída é retornado.Boolean value that indicates whether this output value is returned. Quando true, o valor é incluído na saída para a implantação.When true, the value is included in the output for the deployment. Quando false, o valor de saída é ignorado para esta implantação.When false, the output value is skipped for this deployment. Quando não especificado, o valor padrão é true.When not specified, the default value is true.
typetype SimYes Tipo do valor de saída.Type of the output value. Valores de saída oferecem suporte aos mesmos tipos que os parâmetros de entrada do modelo.Output values support the same types as template input parameters. Se você especificar SecureString para o tipo de saída, o valor não será exibido no histórico de implantação e não poderá ser recuperado de outro modelo.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. Para usar um valor secreto em mais de um modelo, armazene o segredo em um Key Vault e referencie o segredo no arquivo de parâmetro.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. Para saber mais, confira Usar o Azure Key Vault para passar um valor de parâmetro seguro durante a implantação.For more information, see Use Azure Key Vault to pass secure parameter value during deployment.
valuevalue SimYes Expressão de linguagem do modelo avaliada e retornada como valor de saída.Template language expression that is evaluated and returned as output value.

Para obter exemplos de como usar saídas, consulte saídas no modelo Azure Resource Manager.For examples of how to use outputs, see Outputs in Azure Resource Manager template.

Comentários e metadadosComments and metadata

Você tem algumas opções para adicionar comentários e metadados ao seu modelo.You have a few options for adding comments and metadata to your template.

Você pode adicionar um objeto metadata praticamente em qualquer lugar em seu modelo.You can add a metadata object almost anywhere in your template. O Resource Manager ignora o objeto, mas seu editor de JSON pode avisar você de que a propriedade não é válida.Resource Manager ignores the object, but your JSON editor may warn you that the property isn't valid. No objeto, defina as propriedades necessárias.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"
  },

Para Parâmetros, adicione um objeto metadata com uma propriedade description.For parameters, add a metadata object with a description property.

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

Ao implantar o modelo por meio do portal, o texto que você fornece na descrição é usado automaticamente como uma dica para esse parâmetro.When deploying the template through the portal, the text you provide in the description is automatically used as a tip for that parameter.

Mostrar dica de parâmetro

Para recursos, adicione um elemento comments ou um objeto de metadados.For resources, add a comments element or a metadata object. O exemplo a seguir mostra um elemento de comentários e um objeto de metadados.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": {}
  }
]

Para saídas, adicione um objeto de metadados ao valor de saída.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"
    }
  },

Você não pode adicionar um objeto de metadados a funções definidas pelo usuário.You can't add a metadata object to user-defined functions.

Para comentários embutidos, você pode usar //, mas essa sintaxe não funciona com todas as ferramentas.For inline comments, you can use // but this syntax doesn't work with all tools. Você não pode usar a CLI do Azure para implantar o modelo com comentários embutidos.You can't use Azure CLI to deploy the template with inline comments. E você não pode usar o editor de modelo do portal para trabalhar em modelos com comentários embutidos.And, you can't use the portal template editor to work on templates with inline comments. Se você adicionar esse estilo de comentário, verifique se as ferramentas que você usa apoiam comentários JSON embutidos.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'))]"
  ],

No VS Code, você pode definir o modo de linguagem para JSON com comentários.In VS Code, you can set the language mode to JSON with comments. Os comentários embutidos não são mais marcados como inválidos.The inline comments are no longer marked as invalid. Para alterar o modo:To change the mode:

  1. Abra a seleção do modo de linguagem (Ctrl+K M)Open language mode selection (Ctrl+K M)

  2. Selecione JSON com Comentários.Select JSON with Comments.

    Selecione o modo de idioma

Próximas etapasNext steps