Understand the structure and syntax of ARM templates (Compreender a estrutura e a sintaxe dos modelos do Resource Manager)
Este artigo descreve a estrutura de um modelo do Azure Resource Manager (modelo ARM). Ele apresenta as diferentes seções de um modelo e as propriedades que estão disponíveis nessas seções.
Este artigo destina-se a usuários que têm alguma familiaridade com modelos ARM. Ele fornece informações detalhadas sobre a estrutura do modelo. Para obter um tutorial passo a passo que o orienta pelo processo de criação de um modelo, consulte Tutorial: Criar e implantar seu primeiro modelo ARM. Para saber mais sobre modelos ARM por meio de um conjunto guiado de módulos do Learn, consulte Implantar e gerenciar recursos no Azure usando modelos ARM.
Gorjeta
Bicep é uma nova linguagem que oferece os mesmos recursos que os modelos ARM, mas com uma sintaxe mais fácil de usar. Se você está considerando a infraestrutura como opções de código, recomendamos que você consulte o Bicep.
Para saber mais sobre os elementos de um arquivo Bicep, consulte Compreender a estrutura e a sintaxe dos arquivos Bicep.
Formato de modelo
Em sua estrutura mais simples, um modelo tem os seguintes elementos:
{
"$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
"languageVersion": "",
"contentVersion": "",
"apiProfile": "",
"definitions": { },
"parameters": { },
"variables": { },
"functions": [ ],
"resources": [ ], /* or "resources": { } with languageVersion 2.0 */
"outputs": { }
}
Nome do elemento | Necessário | Description |
---|---|---|
$schema | Sim | Local do arquivo de esquema JSON (JavaScript Object Notation) que descreve a versão da linguagem do modelo. O número de versão que utiliza depende do âmbito da implementação e do seu editor de JSON. Se você estiver usando o Visual Studio Code com a extensão de ferramentas do Azure Resource Manager, use a versão mais recente para implantações de grupo de recursos: 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. Para esses editores, 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# Para implantações de grupo de gerenciamento, use: https://schema.management.azure.com/schemas/2019-08-01/managementGroupDeploymentTemplate.json# Para implantações de locatário, use: https://schema.management.azure.com/schemas/2019-08-01/tenantDeploymentTemplate.json# |
languageVersion | Não | Versão linguística do modelo. Para exibir os aprimoramentos do languageVersion 2.0, consulte languageVersion 2.0. |
contentVersion | Sim | Versão do modelo (como 1.0.0.0). Você pode fornecer qualquer valor para esse elemento. Use esse valor para documentar alterações significativas em seu modelo. Ao implantar recursos usando o modelo, esse valor pode ser usado para garantir que o modelo correto esteja sendo usado. |
apiProfile | Não | Uma versão da API que serve como uma coleção de versões da API para tipos de recursos. Use esse valor para evitar ter que especificar versões de API para cada recurso no modelo. 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 da API para esse tipo de recurso definido no perfil. A propriedade de perfil da API é especialmente útil ao implantar um modelo em ambientes diferentes, como o Azure Stack e o Azure global. Use a versão do perfil da API para garantir que seu modelo use automaticamente as versões suportadas em ambos os ambientes. Para obter uma lista das versões atuais do perfil da API e das versões da API de recursos definidas no perfil, consulte Perfil da API. Para obter mais informações, consulte Controlar versões usando perfis de API. |
Definições | Não | Esquemas que são usados para validar valores de matriz e objeto. As definições só são suportadas no languageVersion 2.0. |
parameters | Não | Valores fornecidos quando a implantação é executada para personalizar a implantação de recursos. |
variáveis | Não | Valores que são usados como fragmentos JSON no modelo para simplificar expressões de linguagem de modelo. |
funções | Não | Funções definidas pelo usuário que estão disponíveis no modelo. |
Recursos | Sim | Tipos de recursos implantados ou atualizados em um grupo de recursos ou assinatura. |
saídas | Não | Valores que são retornados após a implantação. |
Cada elemento tem propriedades que você pode definir. Este artigo descreve as seções do modelo com mais detalhes.
Definições
definitions
Na seção do modelo, especifique os esquemas usados para validar valores de matriz e objeto. Definitions
só pode ser usado com languageVersion 2.0.
"definitions": {
"<definition-name": {
"type": "<data-type-of-definition>",
"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>,
"prefixItems": <schema-for-validating-array>,
"items": <schema-for-validating-array-or-boolean>,
"properties": <schema-for-validating-object>,
"additionalProperties": <schema-for-validating-object-or-boolean>,
"discriminator": <schema-to-apply>,
"nullable": <boolean>,
"metadata": {
"description": "<description-of-the-type-definition>"
}
}
}
Nome do elemento | Necessário | Description |
---|---|---|
nome-definição | Sim | Nome da definição de tipo. tem de ser um identificador JavaScript válido. |
tipo | Sim | Tipo da definição de tipo. Os tipos e valores permitidos são string, securestring, int, bool, object, secureObject e array. Consulte Tipos de dados em modelos ARM. |
allowedValues | Não | Matriz de valores permitidos para a definição de tipo para garantir que o valor correto seja fornecido. |
minValor | Não | O valor mínimo para definições de tipo int, esse valor é inclusivo. |
maxValor | Não | O valor máximo para definições de tipo int, esse valor é inclusivo. |
minComprimento | Não | O comprimento mínimo para definições de cadeia de caracteres, cadeia de caracteres segura e tipo de matriz, esse valor é inclusivo. |
maxComprimento | Não | O comprimento máximo para definições de cadeia de caracteres, cadeia de caracteres segura e tipo de matriz, esse valor é inclusivo. |
prefixItems | Não | O esquema para validar o elemento de uma matriz no mesmo índice. |
itens | Não | O esquema que é aplicado a todos os elementos da matriz cujo índice é maior do que o maior índice da prefixItems restrição, ou booleano para controlar os elementos da matriz cujo índice é maior do que o maior índice da prefixItems restrição. |
propriedades | Não | O esquema para validar o objeto. |
additionalProperties | Não | O esquema que é aplicado a todas as propriedades não mencionadas na properties restrição, ou booleano para aceitar qualquer propriedade não definida na properties restrição. |
discriminador | Não | O esquema a ser aplicado com base em uma propriedade discriminadora. |
anulável | Não | Um booleano indicando que o valor pode ser nulo ou omitido. |
descrição | Não | Descrição da definição de tipo que é exibida aos usuários através do portal. Para obter mais informações, consulte Comentários em modelos. |
Para obter exemplos de como usar definições de tipo, consulte Definições de tipo em modelos ARM.
No Bicep, consulte Tipos de dados definidos pelo usuário.
Parâmetros
parameters
Na seção do modelo, você especifica quais valores pode ser inserido ao implantar os recursos. Você está limitado a 256 parâmetros em um modelo. Você pode reduzir o número de parâmetros usando objetos que contêm várias propriedades.
As propriedades disponíveis para um parâmetro são:
"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>,
"prefixItems": <schema-for-validating-array>,
"items": <schema-for-validating-array-or-boolean>,
"properties": <schema-for-validating-object>,
"additionalProperties": <schema-for-validating-object-or-boolean>,
"discriminator": <schema-to-apply>,
"nullable": <boolean>,
"metadata": {
"description": "<description-of-the parameter>"
}
}
}
Nome do elemento | Necessário | Description |
---|---|---|
nome-parâmetro | Sim | Nome do parâmetro. tem de ser um identificador JavaScript válido. |
tipo | Sim | Tipo do valor do parâmetro. Os tipos e valores permitidos são string, securestring, int, bool, object, secureObject e array. Consulte Tipos de dados em modelos ARM. |
defaultValue | Não | Valor padrão para o parâmetro, se nenhum valor for fornecido para o parâmetro. |
allowedValues | Não | Matriz de valores permitidos para o parâmetro para garantir que o valor correto seja fornecido. |
minValor | Não | O valor mínimo para parâmetros de tipo int, esse valor é inclusivo. |
maxValor | Não | O valor máximo para parâmetros de tipo int, esse valor é inclusivo. |
minComprimento | Não | O comprimento mínimo para parâmetros de cadeia de caracteres, cadeia de caracteres segura e tipo de matriz, esse valor é inclusivo. |
maxComprimento | Não | O comprimento máximo para parâmetros de cadeia de caracteres, cadeia de caracteres segura e tipo de matriz, esse valor é inclusivo. |
prefixItems | Não | A definição de tipo para validar o elemento de uma matriz no mesmo índice. prefixItems só é suportado no languageVersion 2.0. |
itens | Não | O esquema que é aplicado a todos os elementos da matriz cujo índice é maior do que o maior índice da prefixItems restrição, ou booleano para controlar os elementos da matriz cujo índice é maior do que o maior índice da prefixItems restrição. items só é suportado no languageVersion 2.0. |
propriedades | Não | O esquema para validar o objeto. properties só é suportado no languageVersion 2.0. |
additionalProperties | Não | O esquema que é aplicado a todas as propriedades não mencionadas na properties restrição, ou booleano para aceitar qualquer propriedade não definida na properties restrição. additionalProperties só é suportado no languageVersion 2.0. |
discriminador | Não | O esquema a ser aplicado com base em uma propriedade discriminadora. discriminator só é suportado no languageVersion 2.0. |
anulável | Não | Um booleano indicando que o valor pode ser nulo ou omitido. nullable só é suportado no languageVersion 2.0. |
descrição | Não | Descrição do parâmetro que é exibido aos usuários através do portal. Para obter mais informações, consulte Comentários em modelos. |
Para obter exemplos de como usar parâmetros, consulte Parâmetros em modelos ARM.
No Bicep, consulte parâmetros.
Variáveis
Na seção , você constrói valores que podem ser usados em todo o variables
modelo. Você não precisa definir variáveis, mas elas geralmente simplificam seu modelo reduzindo expressões complexas. O formato de cada variável corresponde a um dos tipos de dados. Você está limitado a 256 variáveis em um modelo.
O exemplo a seguir mostra as opções disponíveis para definir uma variável:
"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
para criar vários valores para uma variável, consulte Iteração de variáveis.
Para obter exemplos de como usar variáveis, consulte Variáveis no modelo ARM.
No Bicep, consulte variáveis.
Funções
Dentro do seu modelo, você pode criar suas próprias funções. Essas funções estão disponíveis para uso em seu modelo. Normalmente, você define expressões complicadas que não deseja repetir em todo o modelo. Você cria as funções definidas pelo usuário a partir de expressões e funções suportadas em modelos.
Ao definir uma função de usuário, existem algumas restrições:
- A função não pode acessar variáveis.
- A função só pode usar parâmetros que são definidos na função. Quando você usa a função de parâmetros dentro de uma função definida pelo usuário, você está restrito aos parâmetros para essa função.
- A função não pode chamar outras funções definidas pelo usuário.
- A função não pode usar a função de referência.
- Os parâmetros para a função não podem ter valores padrão.
"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 elemento | Necessário | Description |
---|---|---|
espaço de nomes | Sim | Namespace para as funções personalizadas. Use para evitar conflitos de nomenclatura com funções de modelo. |
nome-função | Sim | Nome da função personalizada. Ao chamar a função, combine o nome da função com o namespace. Por exemplo, para chamar uma função nomeada uniqueName no namespace contoso, use "[contoso.uniqueName()]" . |
nome-parâmetro | Não | Nome do parâmetro a ser usado dentro da função personalizada. |
valor-parâmetro | Não | Tipo do valor do parâmetro. Os tipos e valores permitidos são string, securestring, int, bool, object, secureObject e array. |
tipo de saída | Sim | Tipo do valor de saída. Os valores de saída suportam os mesmos tipos que os parâmetros de entrada de função. |
valor de saída | Sim | Expressão de linguagem de modelo que é avaliada e retornada da função. |
Para obter exemplos de como usar funções personalizadas, consulte Funções definidas pelo usuário no modelo ARM.
No Bicep, as funções definidas pelo usuário não são suportadas. Bicep suporta várias funções e operadores.
Recursos
resources
Na seção , você define os recursos que são implantados ou atualizados. Você está limitado a 800 recursos em um modelo.
Você define recursos com a seguinte estrutura:
"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>"
},
"identity": {
"type": "<system-assigned-or-user-assigned-identity>",
"userAssignedIdentities": {
"<resource-id-of-identity>": {}
}
},
"sku": {
"name": "<sku-name>",
"tier": "<sku-tier>",
"size": "<sku-size>",
"family": "<sku-family>",
"capacity": <sku-capacity>
},
"kind": "<type-of-resource>",
"scope": "<target-scope-for-extension-resources>",
"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 elemento | Necessário | Description |
---|---|---|
condição | Não | Valor booleano que indica se o recurso é provisionado durante essa implantação. Quando true o , o recurso é criado durante a implantação. Quando false o , o recurso é ignorado para esta implantação. Ver condição. |
tipo | Sim | Tipo de recurso. Esse valor é uma combinação do namespace do provedor de recursos e do tipo de recurso (como Microsoft.Storage/storageAccounts ). Para determinar os valores disponíveis, consulte Referência do modelo. Para um recurso filho, o formato do tipo depende se ele está aninhado dentro do recurso pai ou definido fora do recurso pai. Consulte Definir nome e tipo para recursos filho. |
apiVersion | Sim | Versão da API REST a ser usada para criar o recurso. Ao criar um novo modelo, defina esse valor como a versão mais recente do recurso que você está implantando. Enquanto o modelo funcionar conforme necessário, continue usando a mesma versão da API. Ao continuar a usar a mesma versão da API, você minimiza o risco de uma nova versão da API alterar o funcionamento do modelo. Considere atualizar a versão da API somente quando quiser usar um novo recurso introduzido em uma versão posterior. Para determinar os valores disponíveis, consulte Referência do modelo. |
nome | Sim | Nome do recurso. O nome deve seguir as restrições do componente URI definidas no RFC3986. Os serviços do Azure que expõem o nome do recurso a terceiros validam o nome para garantir que não seja uma tentativa de falsificar outra identidade. Para um recurso filho, o formato do nome depende se ele está aninhado dentro do recurso pai ou definido fora do recurso pai. Consulte Definir nome e tipo para recursos filho. |
comentários | Não | Suas anotações para documentar os recursos em seu modelo. Para obter mais informações, consulte Comentários em modelos. |
localização | Varia | Geo-localizações suportadas do recurso fornecido. Você pode selecionar qualquer um dos locais disponíveis, mas normalmente faz sentido escolher um que esteja perto de seus usuários. Normalmente, também faz sentido colocar recursos que interagem uns com os outros na mesma região. A maioria dos tipos de recursos requer um local, mas alguns tipos (como uma atribuição de função) não exigem um local. Consulte Definir local do recurso. |
dependsOn | Não | Recursos que devem ser implantados antes que esse recurso seja implantado. O Resource Manager avalia as dependências entre recursos e as implanta na ordem correta. Quando os recursos não dependem uns dos outros, eles são implantados em paralelo. O valor pode ser uma lista separada por vírgulas de nomes de recursos ou identificadores exclusivos de recursos. Liste apenas os recursos implantados neste modelo. Os recursos que não estão definidos neste modelo já devem existir. Evite adicionar dependências desnecessárias, pois elas podem retardar sua implantação e criar dependências circulares. Para obter orientação sobre como definir dependências, consulte Definir a ordem de implantação de recursos em modelos ARM. |
etiquetas | Não | Tags associadas ao recurso. Aplique tags para organizar logicamente os recursos em toda a sua assinatura. |
de identidade | Não | Alguns recursos dão suporte a identidades gerenciadas para recursos do Azure. Esses recursos têm um objeto de identidade no nível raiz da declaração de recurso. Você pode definir se a identidade é atribuída pelo usuário ou pelo sistema. Para identidades atribuídas pelo usuário, forneça uma lista de IDs de recursos para as identidades. Defina a chave para o ID do recurso e o valor para um objeto vazio. Para obter mais informações, consulte Configurar identidades gerenciadas para recursos do Azure em uma VM do Azure usando modelos. |
sku | Não | Alguns recursos permitem a implantação de valores que definem a SKU. Por exemplo, você pode especificar o tipo de redundância para uma conta de armazenamento. |
variante | Não | Alguns recursos permitem um valor que define o tipo de recurso que você implanta. Por exemplo, você pode especificar o tipo de instância do Azure Cosmos DB a ser criada. |
âmbito | Não | A propriedade scope só está disponível para tipos de recursos de extensão. Use-o ao especificar um escopo diferente do escopo de implantação. Consulte Definindo o escopo para recursos de extensão em modelos ARM. |
Cópia | Não | Se mais de uma instância for necessária, o número de recursos a serem criados. O modo padrão é paralelo. Especifique o modo serial quando não quiser que todos ou os recursos sejam implantados ao mesmo tempo. Para obter mais informações, consulte Criar várias instâncias de recursos no Azure Resource Manager. |
plano | Não | Alguns recursos permitem valores que definem o plano de implantação. Por exemplo, você pode especificar a imagem do mercado para uma máquina virtual. |
propriedades | Não | Definições de configuração específicas do recurso. Os valores para as propriedades são os mesmos que os valores fornecidos no corpo da solicitação para a operação da API REST (método PUT) para criar o recurso. Você também pode especificar uma matriz de cópia para criar várias instâncias de uma propriedade. Para determinar os valores disponíveis, consulte Referência do modelo. |
recursos | Não | Recursos filho que dependem do recurso que está sendo definido. Forneça apenas os tipos de recursos permitidos pelo esquema do recurso pai. A dependência do recurso pai não está implícita. Você deve definir explicitamente essa dependência. Consulte Definir nome e tipo para recursos filho. |
Para dar suporte ao nome simbólico do Bicep em modelos JSON ARM, adicione languageVersion
com a versão 2.0
ou mais recente e altere a definição de recurso de uma matriz para um objeto.
{
"$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
"languageVersion": "2.0",
"contentVersion": "1.0.0.0",
"resources": {
"<name-of-the-resource>": {
...
}
}
}
Para obter mais informações, consulte Recursos.
No Bicep, consulte recursos.
Saídas
Na seção , você especifica os outputs
valores que são retornados da implantação. Normalmente, você retorna valores de recursos que foram implantados. Você está limitado a 64 saídas em um modelo.
O exemplo a seguir mostra a estrutura de uma definição de saída:
"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 elemento | Necessário | Description |
---|---|---|
nome da saída | Sim | Nome do valor de saída. tem de ser um identificador JavaScript válido. |
condição | Não | Valor booleano que indica se esse valor de saída é retornado. Quando true , o valor é incluído na saída para a implantação. Quando false , o valor de saída é ignorado para esta implantação. Quando não especificado, o valor padrão é true . |
tipo | Sim | Tipo do valor de saída. Os valores de saída suportam os mesmos tipos que os parâmetros de entrada do modelo. 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. Para usar um valor secreto em mais de um modelo, armazene o segredo em um Cofre de Chaves e faça referência ao segredo no arquivo de parâmetros. Para obter mais informações, consulte Usar o Azure Key Vault para passar o valor do parâmetro seguro durante a implantação. |
valor | Não | Expressão de linguagem de modelo que é avaliada e retornada como valor de saída. Especifique o valor ou a cópia. |
Cópia | Não | Usado para retornar mais de um valor para uma saída. Especifique o valor ou a cópia. Para obter mais informações, consulte Iteração de saída em modelos ARM. |
Para obter exemplos de como usar saídas, consulte Saídas no modelo ARM.
No Bicep, consulte saídas.
Comentários e metadados
Você tem algumas opções para adicionar comentários e metadados ao seu modelo.
Comentários
Para comentários embutidos, você pode usar um //
ou /* ... */
. No Visual Studio Code, salve os arquivos de parâmetro com comentários como o tipo de arquivo JSON com comentários (JSONC), caso contrário, você receberá uma mensagem de erro dizendo "Comentários não permitidos em JSON".
Nota
Ao usar a CLI do Azure para implantar modelos com comentários, use a versão 2.3.0 ou posterior e especifique a --handle-extended-json-format
opção.
{
"type": "Microsoft.Compute/virtualMachines",
"apiVersion": "2023-03-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 Azure Resource Manager Tools pode detetar automaticamente um modelo ARM e alterar o modo de idioma. Se você vir Modelo do Azure Resource Manager no canto inferior direito do Visual Studio Code, poderá usar os comentários embutidos. Os comentários embutidos não são mais marcados como inválidos.
No Bicep, ver comentários.
Metadados
Você pode adicionar um metadata
objeto em praticamente qualquer lugar em seu modelo. O Gerenciador de Recursos ignora o objeto, mas o editor JSON pode avisá-lo de que a propriedade não é válida. No objeto, defina as propriedades necessárias.
{
"$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.
"parameters": {
"adminUsername": {
"type": "string",
"metadata": {
"description": "User name for the Virtual Machine."
}
},
Ao implantar o modelo através do portal, o texto fornecido na descrição é usado automaticamente como uma dica para esse parâmetro.
Para resources
, adicione um comments
elemento ou um metadata
objeto. O exemplo a seguir mostra um comments
elemento e um metadata
objeto.
"resources": [
{
"type": "Microsoft.Storage/storageAccounts",
"apiVersion": "2022-09-01",
"name": "[format('{0}{1}', '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.
"outputs": {
"hostname": {
"type": "string",
"value": "[reference(variables('publicIPAddressName')).dnsSettings.fqdn]",
"metadata": {
"comments": "Return the fully qualified domain name"
}
},
Não é possível adicionar um metadata
objeto a funções definidas pelo usuário.
Strings de várias linhas
Você pode dividir uma cadeia de caracteres em várias linhas. Por exemplo, consulte a location
propriedade e um dos comentários no exemplo JSON a seguir.
Nota
Para implantar modelos com cadeias de caracteres de várias linhas, use o Azure PowerShell ou a CLI do Azure. Para CLI, use a versão 2.3.0 ou posterior e especifique a --handle-extended-json-format
opção.
Não há suporte para cadeias de caracteres de várias linhas quando você implanta o modelo por meio do portal do Azure, de um pipeline de DevOps ou da API REST.
{
"type": "Microsoft.Compute/virtualMachines",
"apiVersion": "2023-03-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'))]"
],
No Bicep, consulte cadeias de caracteres de várias linhas.
languageVersão 2.0
Nota
O uso de qualquer um languageVersion
que termine não é recomendado em ambientes de produção, pois a funcionalidade experimental pode ser alterada a -experimental
qualquer momento.
Nota
A versão atual da extensão Azure Resource Manager Tools para Visual Studio Code não reconhece os aprimoramentos feitos no languageVersion 2.0.
Para usar languageVersion 2.0, adicione "languageVersion": "2.0"
ao seu modelo:
{
"$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
"languageVersion": "2.0",
"contentVersion": "1.0.0.0",
"resources": {
"<name-of-the-resource>": {
...
}
}
}
Os aprimoramentos e alterações que vêm com languageVersion 2.0:
- Use o nome simbólico no modelo JSON ARM. Para obter mais informações, consulte Usar nome simbólico.
- Use o nome simbólico em loops de cópia de recursos. Consulte Usar nome simbólico.
- Use o nome simbólico em
dependsOn
matrizes. Consulte DependsOn e Depend on resources in a loop. - Use o nome simbólico em vez do nome do recurso na
reference
função. Veja a referência. - Uma função references() que retorna uma matriz de objetos que representam os estados de tempo de execução de uma coleção de recursos. Ver referências.
- Use a propriedade de recurso 'existente' para declarar recursos existentes para o ARM ler em vez de implantar um recurso. Consulte Declarar recursos existentes.
- Crie tipos definidos pelo usuário. Consulte Definição de tipo.
- Restrições adicionais de validação de tipo agregado a serem usadas em parâmetros e saídas.
- O valor padrão para a
expressionEvaluationOptions
propriedade éinner
. O valorouter
está bloqueado. Consulte Escopo de avaliação de expressão em modelos aninhados. - A
deployment
função retorna um subconjunto limitado de propriedades. Consulte a implantação. - Se o recurso Deployments for usado em uma implantação de nome simbólico, use apiVersion
2020-09-01
ou posterior. - Na definição de recurso, valores de escape duplo dentro de uma expressão não são mais necessários. Consulte Personagens de fuga.
O uso de qualquer um dos seguintes recursos do Bicep habilita automaticamente a geração de código da versão 2.0 do idioma:
- Tipos definidos pelo usuário
- funções definidas pelo utilizador
- Importações em tempo de compilação
- características experimentais
Próximos passos
- Para ver modelos completos para vários tipos de soluções, veja os Modelos de Início Rápido do Azure.
- Para obter detalhes sobre as funções que você pode usar de dentro de um modelo, consulte Funções de modelo ARM.
- Para combinar vários modelos durante a implantação, consulte Usando modelos vinculados e aninhados ao implantar recursos do Azure.
- Para obter recomendações sobre como criar modelos, consulte Práticas recomendadas de modelo ARM.
- Para obter respostas a perguntas comuns, consulte Perguntas frequentes sobre modelos ARM.