Noções básicas de estrutura e sintaxe dos modelos ARMUnderstand the structure and syntax of ARM templates

Este artigo descreve a estrutura de um modelo de Azure Resource Manager (modelo ARM).This article describes the structure of an Azure Resource Manager template (ARM 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 ARM.This article is intended for users who have some familiarity with ARM templates. Ele fornece informações detalhadas sobre a estrutura do modelo.It provides detailed information about the structure of the template. Para obter um tutorial passo a passo que orienta você durante o processo de criação de um modelo, confira Tutorial: criar e implantar seu primeiro modelo do ARM.For a step-by-step tutorial that guides you through the process of creating a template, see Tutorial: Create and deploy your first ARM template. Para saber mais sobre os modelos do ARM por meio de um conjunto guiado de módulos no Microsoft Learn, consulte implantar e gerenciar recursos no Azure usando modelos do ARM.To learn about ARM templates through a guided set of modules on Microsoft Learn, see Deploy and manage resources in Azure by using ARM 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/2019-04-01/deploymentTemplate.json#",
  "contentVersion": "",
  "apiProfile": "",
  "parameters": {  },
  "variables": {  },
  "functions": [  ],
  "resources": [  ],
  "outputs": {  }
}
Nome do elementoElement name ObrigatórioRequired DescriçãoDescription
$schema$schema SimYes Local do arquivo de esquema JavaScript Object Notation (JSON) que descreve a versão do idioma do modelo.Location of the JavaScript Object Notation (JSON) schema file that describes the version of the template language. O número de versão usada depende do escopo da implantação e do editor de JSON.The version number you use depends on the scope of the deployment and your JSON editor.

Se você estiver usando Visual Studio Code com a extensão de ferramentas de Azure Resource Manager, use a versão mais recente para implantações de grupo de recursos:If you're using Visual Studio Code with the Azure Resource Manager tools extension, use the latest version for resource group deployments:
https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#

Outros editores (incluindo o Visual Studio) podem não ser capazes de processar esse esquema.Other editors (including Visual Studio) may not be able to process this schema. Para esses editores, use:For those editors, use:
https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#

Para implantações de assinatura, use:For subscription deployments, use:
https://schema.management.azure.com/schemas/2018-05-01/subscriptionDeploymentTemplate.json#

Para implantações de grupo de gerenciamento, use:For management group deployments, use:
https://schema.management.azure.com/schemas/2019-08-01/managementGroupDeploymentTemplate.json#

Para implantações de locatário, use:For tenant deployments, use:
https://schema.management.azure.com/schemas/2019-08-01/tenantDeploymentTemplate.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 NoNo 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 NoNo 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.
variáveisvariables NoNo 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 NoNo Funções definidas pelo usuário que estão disponíveis no modelo.User-defined functions that are available within the template.
osresources 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.
outputsoutputs NoNo 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.

Tipos de dadosData types

Em um modelo do ARM, você pode usar esses tipos de dados:Within an ARM template, you can use these data types:

  • stringstring
  • secureStringsecurestring
  • INTint
  • boolbool
  • objectobject
  • secureObjectsecureObject
  • arrayarray

O modelo a seguir mostra o formato dos tipos de dados.The following template shows the format for the data types. Cada tipo tem um valor padrão no formato correto.Each type has a default value in the correct format.

{
  "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
  "contentVersion": "1.0.0.0",
  "parameters": {
    "stringParameter": {
      "type": "string",
      "defaultValue": "option 1"
    },
    "intParameter": {
      "type": "int",
      "defaultValue": 1
    },
    "boolParameter": {
        "type": "bool",
        "defaultValue": true
    },
    "objectParameter": {
      "type": "object",
      "defaultValue": {
        "one": "a",
        "two": "b"
      }
    },
    "arrayParameter": {
      "type": "array",
      "defaultValue": [ 1, 2, 3 ]
    }
  },
  "resources": [],
  "outputs": {}
}

A cadeia de caracteres segura usa o mesmo formato que a cadeia de caracteres, e o objeto seguro usa o mesmo formato que o objeto.Secure string uses the same format as string, and secure object uses the same format as object. Quando você define um parâmetro como uma cadeia de caracteres segura ou um objeto seguro, o valor do parâmetro não é salvo no histórico de implantação e não é registrado.When you set a parameter to a secure string or secure object, the value of the parameter isn't saved to the deployment history and isn't logged. No entanto, se você definir esse valor seguro para uma propriedade que não está esperando um valor seguro, o valor não será protegido.However, if you set that secure value to a property that isn't expecting a secure value, the value isn't protected. Por exemplo, se você definir uma cadeia de caracteres segura para uma marca, esse valor será armazenado como texto sem formatação.For example, if you set a secure string to a tag, that value is stored as plain text. Use cadeias de caracteres seguras para senhas e segredos.Use secure strings for passwords and secrets.

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. Valores de cadeia de caracteres de início e término com aspas duplas ( "string value" ).Start and end string values with double quotation marks ("string value").

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 (]).

ParâmetrosParameters

Na parameters seção do modelo, você especifica quais valores 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. O limite de parâmetros em um modelo é 256.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 Obrigató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.
tipotype 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 NoNo 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 NoNo 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 NoNo 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 NoNo 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 NoNo 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 NoNo 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.
descriçãodescription NoNo 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 ARM.For examples of how to use parameters, see Parameters in ARM templates.

VariáveisVariables

Na variables seção, você cria valores que podem ser usados em todo o 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 formato de cada variável corresponde a um dos tipos de dados.The format of each variable matches one of the data types.

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 como usar copy 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 ARM.For examples of how to use variables, see Variables in ARM 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 Obrigató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 NoNo 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 NoNo 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 ARM.For examples of how to use custom functions, see User-defined functions in ARM template.

RecursosResources

Na resources seção, 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>",
      "type": "<resource-provider-namespace/resource-type-name>",
      "apiVersion": "<api-version-of-resource>",
      "name": "<name-of-the-resource>",
      "comments": "<your-reference-notes>",
      "location": "<location-of-resource>",
      "dependsOn": [
          "<array-of-related-resource-names>"
      ],
      "tags": {
          "<tag-name1>": "<tag-value1>",
          "<tag-name2>": "<tag-value2>"
      },
      "sku": {
          "name": "<sku-name>",
          "tier": "<sku-tier>",
          "size": "<sku-size>",
          "family": "<sku-family>",
          "capacity": <sku-capacity>
      },
      "kind": "<type-of-resource>",
      "copy": {
          "name": "<name-of-copy-loop>",
          "count": <number-of-iterations>,
          "mode": "<serial-or-parallel>",
          "batchSize": <number-to-deploy-serially>
      },
      "plan": {
          "name": "<plan-name>",
          "promotionCode": "<plan-promotion-code>",
          "publisher": "<plan-publisher>",
          "product": "<plan-product>",
          "version": "<plan-version>"
      },
      "properties": {
          "<settings-for-the-resource>",
          "copy": [
              {
                  "name": ,
                  "count": ,
                  "input": {}
              }
          ]
      },
      "resources": [
          "<array-of-child-resources>"
      ]
  }
]
Nome do elementoElement name ObrigatórioRequired DescriçãoDescription
conditioncondition NoNo 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.
tipotype 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.
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. Ao criar um novo modelo, defina esse valor para a versão mais recente do recurso que você está implantando.When creating a new template, set this value to the latest version of the resource you're deploying. Desde que o modelo funcione conforme necessário, continue usando a mesma versão de API.As long as the template works as needed, keep using the same API version. Ao continuar a usar a mesma versão de API, você minimiza o risco de uma nova versão de API alterar a forma como o modelo funciona.By continuing to use the same API version, you minimize the risk of a new API version changing how your template works. Considere atualizar a versão da API somente quando desejar usar um novo recurso que é introduzido em uma versão posterior.Consider updating the API version only when you want to use a new feature that is introduced in a later version. Para determinar os valores disponíveis, consulte referência de modelo.To determine available values, see template reference.
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.
commentscomments NoNo 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.
locallocation 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.
dependsOndependsOn NoNo 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 definir dependências, consulte definir a ordem de implantação de recursos em modelos ARM.For guidance on setting dependencies, see Define the order for deploying resources in ARM templates.
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.
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.
kindkind NoNo 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.
copycopy NoNo 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.
planplan NoNo 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.
propertiesproperties NoNo 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.
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 outputs seção, 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>",
    "copy": {
      "count": <number-of-iterations>,
      "input": <values-for-the-variable>
    }
  }
}
Nome do elementoElement name Obrigató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.
conditioncondition NoNo 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.
tipotype 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 NoNo 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. Especifique o valor ou a cópia.Specify either value or copy.
copycopy NoNo Usado para retornar mais de um valor para uma saída.Used to return more than one value for an output. Especifique o valor ou a cópia.Specify value or copy. Para obter mais informações, consulte Iteration de saída em modelos ARM.For more information, see Output iteration in ARM templates.

Para obter exemplos de como usar saídas, consulte saídas no modelo ARM.For examples of how to use outputs, see Outputs in ARM 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.

ComentáriosComments

Para comentários embutidos, você pode usar o // ou o /* ... */ , mas essa sintaxe não funciona com todas as ferramentas.For inline comments, you can use either // or /* ... */ but this syntax doesn't work with all tools. 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.

Observação

Para implantar modelos com comentários usando CLI do Azure com a versão 2.3.0 ou mais antiga, você deve usar a --handle-extended-json-format opção.To deploy templates with comments by using Azure CLI with version 2.3.0 or older, you must use the --handle-extended-json-format switch.

{
  "type": "Microsoft.Compute/virtualMachines",
  "apiVersion": "2018-10-01",
  "name": "[variables('vmName')]", // to customize name, change it in variables
  "location": "[parameters('location')]", //defaults to resource group location
  "dependsOn": [ /* storage account and network interface must be deployed first */
    "[resourceId('Microsoft.Storage/storageAccounts/', variables('storageAccountName'))]",
    "[resourceId('Microsoft.Network/networkInterfaces/', variables('nicName'))]"
  ],

No Visual Studio Code, a extensão de ferramentas de Azure Resource Manager pode detectar automaticamente um modelo de ARM e alterar o modo de linguagem.In Visual Studio Code, the Azure Resource Manager Tools extension can automatically detect an ARM template and change the language mode. Se você vir Azure Resource Manager modelo no canto inferior direito de Visual Studio Code, poderá usar os comentários embutidos.If you see Azure Resource Manager Template at the bottom-right corner of Visual Studio Code, you can use the inline comments. Os comentários embutidos não são mais marcados como inválidos.The inline comments are no longer marked as invalid.

Modo de modelo de Azure Resource Manager Visual Studio Code

MetadadosMetadata

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/2019-04-01/deploymentTemplate.json#",
  "contentVersion": "1.0.0.0",
  "metadata": {
    "comments": "This template was developed for demonstration purposes.",
    "author": "Example Name"
  },

Para parameters , adicione um metadata objeto com uma description propriedade.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 resources , adicione um comments elemento ou um metadata objeto.For resources, add a comments element or a metadata object. O exemplo a seguir mostra um comments elemento e um metadata objeto.The following example shows both a comments element and a metadata object.

"resources": [
  {
    "type": "Microsoft.Storage/storageAccounts",
    "apiVersion": "2018-07-01",
    "name": "[concat('storage', uniqueString(resourceGroup().id))]",
    "comments": "Storage account used to store VM disks",
    "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 outputs , adicione um metadata objeto 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 metadata objeto a funções definidas pelo usuário.You can't add a metadata object to user-defined functions.

Cadeias de caracteres de várias linhasMulti-line strings

Você pode dividir uma cadeia de caracteres em várias linhas.You can break a string into multiple lines. Por exemplo, consulte a location propriedade e um dos comentários no exemplo de JSON a seguir.For example, see the location property and one of the comments in the following JSON example.

{
  "type": "Microsoft.Compute/virtualMachines",
  "apiVersion": "2018-10-01",
  "name": "[variables('vmName')]", // to customize name, change it in variables
  "location": "[
    parameters('location')
    ]", //defaults to resource group location
  /*
    storage account and network interface
    must be deployed first
  */
  "dependsOn": [
    "[resourceId('Microsoft.Storage/storageAccounts/', variables('storageAccountName'))]",
    "[resourceId('Microsoft.Network/networkInterfaces/', variables('nicName'))]"
  ],

Observação

Para implantar modelos com cadeias de caracteres de várias linhas usando CLI do Azure com a versão 2.3.0 ou mais antiga, você deve usar a --handle-extended-json-format opção.To deploy templates with multi-line strings by using Azure CLI with version 2.3.0 or older, you must use the --handle-extended-json-format switch.

Próximas etapasNext steps