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 de Resource Manager do Azure (modelo arm). Apresenta as diferentes secções de um modelo e as propriedades que estão disponíveis nessas secções.
Este artigo destina-se a utilizadores que estejam familiarizados com os modelos do ARM. Fornece informações detalhadas sobre a estrutura do modelo. Para obter um tutorial passo a passo que o orienta no processo de criação de um modelo, consulte Tutorial: Criar e implementar o seu primeiro modelo do ARM. Para saber mais sobre os modelos do ARM através de um conjunto orientado de módulos do Learn, veja Implementar e gerir recursos no Azure com modelos do ARM.
Dica
O Bicep é uma nova linguagem que oferece as mesmas capacidades que os modelos do ARM, mas com uma sintaxe mais fácil de utilizar. Se estiver a considerar a infraestrutura como opções de código, recomendamos que veja Bicep.
Para saber mais sobre os elementos de um ficheiro Bicep, veja Compreender a estrutura e a sintaxe dos ficheiros bicep.
Formato de modelo
Na 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 | Descrição |
---|---|---|
$schema | Yes | Localização do ficheiro 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 estiver a utilizar o Visual Studio Code com a extensão de ferramentas de Resource Manager do Azure, utilize a versão mais recente para implementações de grupos de recursos: https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json# Outros editores (incluindo o Visual Studio) poderão não conseguir processar este esquema. Para esses editores, utilize: https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json# Para implementações de subscrições, utilize: https://schema.management.azure.com/schemas/2018-05-01/subscriptionDeploymentTemplate.json# Para implementações de grupos de gestão, utilize: https://schema.management.azure.com/schemas/2019-08-01/managementGroupDeploymentTemplate.json# Para implementações de inquilinos, utilize: https://schema.management.azure.com/schemas/2019-08-01/tenantDeploymentTemplate.json# |
languageVersion | No | Versão de idioma do modelo. Para ver os melhoramentos de languageVersion 2.0, veja languageVersion 2.0. |
contentVersion | Yes | Versão do modelo (como 1.0.0.0). Pode fornecer qualquer valor para este elemento. Utilize este valor para documentar alterações significativas no seu modelo. Ao implementar recursos com o modelo, este valor pode ser utilizado para se certificar de que o modelo correto está a ser utilizado. |
apiProfile | No | Uma versão da API que serve como uma coleção de versões de API para tipos de recursos. Utilize este valor para evitar ter de especificar versões de API para cada recurso no modelo. Quando especifica uma versão do perfil de API e não especifica uma versão da API para o tipo de recurso, Resource Manager utiliza a versão da API para esse tipo de recurso definido no perfil. A propriedade perfil de API é especialmente útil ao implementar um modelo em diferentes ambientes, como o Azure Stack e o Azure global. Utilize a versão do perfil da API para se certificar de que o modelo utiliza automaticamente 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, veja Perfil da API. Para obter mais informações, veja Controlar versões com perfis de API. |
definições | No | Esquemas que são utilizados para validar valores de matriz e objeto. As definições só são suportadas no languageVersion 2.0. |
parameters | No | Valores fornecidos quando a implementação é executada para personalizar a implementação de recursos. |
variáveis | No | Valores que são utilizados como fragmentos JSON no modelo para simplificar as expressões de linguagem de modelo. |
funções | No | Funções definidas pelo utilizador que estão disponíveis no modelo. |
recursos | Yes | Tipos de recursos que são implementados ou atualizados num grupo de recursos ou subscrição. |
saídas | No | Valores devolvidos após a implementação. |
Cada elemento tem propriedades que pode definir. Este artigo descreve as secções do modelo com maior detalhe.
Definições
definitions
Na secção do modelo, especifique os esquemas utilizados para validar valores de matriz e objeto.
Definitions
só pode ser utilizado 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 | Descrição |
---|---|---|
definition-name | Yes | Nome da definição do tipo. Tem de ser um identificador JavaScript válido. |
tipo | Yes | Tipo da definição do tipo. Os tipos e valores permitidos são cadeia, securestring, int, bool, object, secureObject e matriz. Veja Tipos de dados em modelos do ARM. |
allowedValues | No | Matriz de valores permitidos para a definição do tipo para se certificar de que o valor certo é fornecido. |
minValue | No | O valor mínimo para definições de tipo int, este valor é inclusivo. |
maxValue | No | O valor máximo para definições de tipo int, este valor é inclusivo. |
minLength | No | O comprimento mínimo das definições de cadeia, cadeia segura e tipo de matriz, este valor é inclusivo. |
maxLength | No | O comprimento máximo das definições de cadeia, cadeia segura e tipo de matriz, este valor é inclusivo. |
prefixItems | No | O esquema para validar o elemento de uma matriz no mesmo índice. |
itens | No | 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 | No | O esquema para validar o objeto. |
additionalProperties | No | O esquema 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 | No | O esquema a aplicar com base numa propriedade discriminatória. |
Nulo | No | Um booleano que indica que o valor pode ser nulo ou omitido. |
descrição | No | Descrição da definição de tipo que é apresentada aos utilizadores através do portal. Para obter mais informações, veja Comentários em modelos. |
Para obter exemplos de como utilizar definições de tipo, veja Escrever definições em modelos do ARM.
No Bicep, veja Tipos de dados definidos pelo utilizador.
Parâmetros
parameters
Na secção do modelo, especifique os valores que pode introduzir ao implementar os recursos. Está limitado a 256 parâmetros num modelo. Pode reduzir o número de parâmetros com 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 | Descrição |
---|---|---|
parameter-name | Yes | Nome do parâmetro . Tem de ser um identificador JavaScript válido. |
tipo | Yes | Tipo do valor do parâmetro. Os tipos e valores permitidos são cadeia, securestring, int, bool, object, secureObject e matriz. Veja Tipos de dados em modelos do ARM. |
valordepredefinido | No | Valor predefinido para o parâmetro, se não for fornecido nenhum valor para o parâmetro . |
allowedValues | No | Matriz de valores permitidos para o parâmetro para garantir que o valor certo é fornecido. |
minValue | No | O valor mínimo para parâmetros de tipo int, este valor é inclusivo. |
maxValue | No | O valor máximo para parâmetros de tipo int, este valor é inclusivo. |
minLength | No | O comprimento mínimo para os parâmetros de cadeia, cadeia segura e tipo de matriz, este valor é inclusivo. |
maxLength | No | O comprimento máximo para os parâmetros de cadeia, cadeia segura e tipo de matriz, este valor é inclusivo. |
prefixItems | No | A definição de tipo para validar o elemento de uma matriz no mesmo índice.
prefixItems só é suportado em languageVersion 2.0. |
itens | No | 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 em languageVersion 2.0. |
propriedades | No | O esquema para validar o objeto.
properties só é suportado em languageVersion 2.0. |
additionalProperties | No | O esquema 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 em languageVersion 2.0. |
discriminador | No | O esquema a aplicar com base numa propriedade discriminatória.
discriminator só é suportado em languageVersion 2.0. |
Nulo | No | Um booleano que indica que o valor pode ser nulo ou omitido.
nullable só é suportado em languageVersion 2.0. |
descrição | No | Descrição do parâmetro que é apresentado aos utilizadores através do portal. Para obter mais informações, veja Comentários em modelos. |
Para obter exemplos de como utilizar parâmetros, veja Parameters in ARM templates (Parâmetros nos modelos do ARM).
No Bicep, veja parâmetros.
Variáveis
variables
Na secção, vai construir valores que podem ser utilizados em todo o modelo. Não precisa de definir variáveis, mas muitas vezes simplificam o seu modelo ao reduzir expressões complexas. O formato de cada variável corresponde a um dos tipos de dados. Está limitado a 256 variáveis num modelo.
O exemplo seguinte 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 utilizar copy
para criar vários valores para uma variável, veja Iteração variável.
Para obter exemplos de como utilizar variáveis, veja Variables in ARM template (Variáveis no modelo arm).
No Bicep, veja variáveis.
Funções
No seu modelo, pode criar as suas próprias funções. Estas funções estão disponíveis para utilização no seu modelo. Normalmente, define expressões complicadas que não pretende repetir em todo o modelo. Pode criar as funções definidas pelo utilizador a partir de expressões e funções que são suportadas em modelos.
Ao definir uma função de utilizador, existem algumas restrições:
- A função não consegue aceder a variáveis.
- A função só pode utilizar parâmetros definidos na função. Quando utiliza a função parâmetros numa função definida pelo utilizador, está restrito aos parâmetros dessa função.
- A função não pode chamar outras funções definidas pelo utilizador.
- A função não pode utilizar a função de referência.
- Os parâmetros da função não podem ter valores predefinidos.
"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 | Descrição |
---|---|---|
espaço de nomes | Yes | Espaço de nomes para as funções personalizadas. Utilizado para evitar conflitos de nomenclatura com funções de modelo. |
nome da função | Yes | Nome da função personalizada. Ao chamar a função, combine o nome da função com o espaço de nomes. Por exemplo, para chamar uma função com o nome uniqueName no espaço de nomes contoso, utilize "[contoso.uniqueName()]" . |
nome do parâmetro | No | Nome do parâmetro a utilizar na função personalizada. |
parameter-value | No | Tipo do valor do parâmetro. Os tipos e valores permitidos são cadeia, securestring, int, bool, object, secureObject e matriz. |
tipo de saída | Yes | Tipo do valor de saída. Os valores de saída suportam os mesmos tipos que os parâmetros de entrada de funções. |
output-value | Yes | Expressão de linguagem de modelo que é avaliada e devolvida da função. |
Para obter exemplos de como utilizar funções personalizadas, veja Funções definidas pelo utilizador no modelo do ARM.
No Bicep, as funções definidas pelo utilizador não são suportadas. O Bicep suporta várias funções e operadores.
Recursos
resources
Na secção, define os recursos que são implementados ou atualizados. Está limitado a 800 recursos num modelo.
Define os 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 | Descrição |
---|---|---|
condição | No | Valor booleano que indica se o recurso é aprovisionado durante esta implementação. Quando true , o recurso é criado durante a implementação. Quando false , o recurso é ignorado para esta implementação. Ver condição. |
tipo | Yes | Tipo de recurso. Este valor é uma combinação do espaço de nomes do fornecedor de recursos e do tipo de recurso (como Microsoft.Storage/storageAccounts ). Para determinar os valores disponíveis, veja referência de modelo. Para um recurso subordinado, o formato do tipo depende se está aninhado no recurso principal ou definido fora do recurso principal. Veja Definir nome e tipo para recursos subordinados. |
apiVersion | Yes | Versão da API REST a utilizar para criar o recurso. Ao criar um novo modelo, defina este valor para a versão mais recente do recurso que está a implementar. Desde que o modelo funcione conforme necessário, continue a utilizar a mesma versão da API. Ao continuar a utilizar a mesma versão da API, minimiza o risco de uma nova versão da API alterar o funcionamento do modelo. Considere atualizar a versão da API apenas quando quiser utilizar uma nova funcionalidade introduzida numa versão posterior. Para determinar os valores disponíveis, veja referência de modelo. |
name | Yes | Nome do recurso. O nome tem de seguir as restrições de componentes URI definidas no RFC3986. Os serviços do Azure que expõem o nome do recurso a entidades externas validam o nome para se certificarem de que não é uma tentativa de falsificar outra identidade. Para um recurso subordinado, o formato do nome depende se está aninhado no recurso principal ou definido fora do recurso principal. Veja Definir nome e tipo para recursos subordinados. |
comentários | No | As suas notas para documentar os recursos no seu modelo. Para obter mais informações, veja Comentários em modelos. |
localização | Varia | Localizações geográficas suportadas do recurso fornecido. Pode selecionar qualquer uma das localizações disponíveis, mas normalmente faz sentido escolher uma que esteja próxima dos seus utilizadores. Normalmente, também faz sentido colocar recursos que interagem entre si na mesma região. A maioria dos tipos de recursos requer uma localização, mas alguns tipos (como uma atribuição de função) não necessitam de uma localização. Veja Definir localização do recurso. |
dependsOn | No | Recursos que têm de ser implementados antes de este recurso ser implementado. Resource Manager avalia as dependências entre recursos e implementa-as pela ordem correta. Quando os recursos não dependem uns dos outros, são implementados em paralelo. O valor pode ser uma lista separada por vírgulas de nomes de recursos ou identificadores exclusivos de recursos. Listar apenas os recursos implementados neste modelo. Os recursos que não estão definidos neste modelo já têm de existir. Evite adicionar dependências desnecessárias, uma vez que podem atrasar a implementação e criar dependências circulares. Para obter orientações sobre como definir dependências, veja Definir a ordem de implementação de recursos em modelos do ARM. |
etiquetas | No | Etiquetas associadas ao recurso. Aplique etiquetas para organizar logicamente recursos na sua subscrição. |
identidade | No | Alguns recursos suportam identidades geridas para recursos do Azure. Esses recursos têm um objeto de identidade no nível de raiz da declaração de recursos. Pode definir se a identidade é atribuída pelo utilizador ou pelo sistema. Para identidades atribuídas pelo utilizador, 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, veja Configurar identidades geridas para recursos do Azure numa VM do Azure com modelos. |
sku | No | Alguns recursos permitem valores que definem o SKU a implementar. Por exemplo, pode especificar o tipo de redundância para uma conta de armazenamento. |
tipo | No | Alguns recursos permitem um valor que define o tipo de recurso que implementa. Por exemplo, pode especificar o tipo de instância do Azure Cosmos DB a criar. |
scope | No | A propriedade de âmbito só está disponível para tipos de recursos de extensão. Utilize-o ao especificar um âmbito diferente do âmbito de implementação. Veja Definir o âmbito dos recursos de extensão nos modelos do ARM. |
Cópia | No | Se for necessária mais do que uma instância, o número de recursos a criar. O modo predefinido é paralelo. Especifique o modo de série quando não quiser que todos ou os recursos sejam implementados ao mesmo tempo. Para obter mais informações, veja Criar várias instâncias de recursos no Azure Resource Manager. |
plano | No | Alguns recursos permitem valores que definem o plano a implementar. Por exemplo, pode especificar a imagem do marketplace para uma máquina virtual. |
propriedades | No | Definições de configuração específicas do recurso. Os valores das propriedades são os mesmos que os valores fornecidos no corpo do pedido para a operação da API REST (método PUT) para criar o recurso. Também pode especificar uma matriz de cópia para criar várias instâncias de uma propriedade. Para determinar os valores disponíveis, veja referência de modelo. |
resources | No | Recursos subordinados que dependem do recurso que está a ser definido. Forneça apenas tipos de recursos permitidos pelo esquema do recurso principal. A dependência do recurso principal não está implícita. Tem de definir explicitamente essa dependência. Veja Definir nome e tipo para recursos subordinados. |
Para suportar o nome simbólico bicep em modelos JSON do 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, veja Recursos.
No Bicep, veja recursos.
Saídas
outputs
Na secção, especifique os valores que são devolvidos da implementação. Normalmente, devolve valores de recursos que foram implementados. Está limitado a 64 saídas num modelo.
O exemplo seguinte 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 | Descrição |
---|---|---|
output-name | Yes | Nome do valor de saída. Tem de ser um identificador JavaScript válido. |
condição | No | Valor booleano que indica se este valor de saída é devolvido. Quando true , o valor é incluído na saída da implementação. Quando false , o valor de saída é ignorado para esta implementação. Quando não for especificado, o valor predefinido é true . |
tipo | Yes | Tipo do valor de saída. Os valores de saída suportam os mesmos tipos que os parâmetros de entrada de modelo. Se especificar securestring para o tipo de saída, o valor não é apresentado no histórico de implementações e não pode ser obtido a partir de outro modelo. Para utilizar um valor secreto em mais do que um modelo, armazene o segredo num Key Vault e referencie o segredo no ficheiro de parâmetros. Para obter mais informações, veja Utilizar o Azure Key Vault para transmitir o valor do parâmetro seguro durante a implementação. |
valor | No | Expressão de linguagem de modelo que é avaliada e devolvida como valor de saída. Especifique o valor ou a cópia. |
Cópia | No | Utilizado para devolver mais do que um valor para uma saída. Especifique o valor ou a cópia. Para obter mais informações, veja Iteração de saída em modelos arm. |
Para obter exemplos de como utilizar saídas, veja Outputs in ARM template (Saídas no modelo do ARM).
No Bicep, veja saídas.
Comentários e metadados
Tem algumas opções para adicionar comentários e metadados ao seu modelo.
Comentários
Para comentários inline, pode utilizar ou //
/* ... */
. No Visual Studio Code, guarde os ficheiros de parâmetros com comentários como o JSON com o tipo de ficheiro de comentários (JSONC ), caso contrário, recebe uma mensagem de erro a indicar "Comentários não permitidos no JSON".
Nota
Ao utilizar a CLI do Azure para implementar modelos com comentários, utilize a versão 2.3.0 ou posterior e especifique o --handle-extended-json-format
comutador.
{
"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 do ARM e alterar o modo de idioma. Se vir o Modelo Resource Manager do Azure no canto inferior direito do Visual Studio Code, pode utilizar os comentários inline. Os comentários inline já não são marcados como inválidos.
No Bicep, veja comentários.
Metadados
Pode adicionar um metadata
objeto em praticamente qualquer lugar no seu modelo. Resource Manager ignora o objeto, mas o editor JSON pode avisá-lo de que a propriedade não é válida. No objeto, defina as propriedades de que precisa.
{
"$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 implementar o modelo através do portal, o texto fornecido na descrição é automaticamente utilizado como uma sugestão para esse parâmetro.
Para resources
, adicione um comments
elemento ou um metadata
objeto. O exemplo seguinte 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 pode adicionar um metadata
objeto a funções definidas pelo utilizador.
Cadeias de várias linhas
Pode dividir uma cadeia em múltiplas linhas. Por exemplo, veja a location
propriedade e um dos comentários no exemplo JSON seguinte.
Nota
Para implementar modelos com cadeias de várias linhas, utilize Azure PowerShell ou a CLI do Azure. Para a CLI, utilize a versão 2.3.0 ou posterior e especifique o --handle-extended-json-format
comutador.
As cadeias de várias linhas não são suportadas quando implementa o modelo através 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, veja cadeias de várias linhas.
languageVersion 2.0
Nota
A utilização de qualquer languageVersion
que termine em -experimental
não é recomendada em ambientes de produção porque a funcionalidade experimental pode ser alterada em qualquer altura.
Nota
A versão atual da extensão do Azure Resource Manager Tools para Visual Studio Code não reconhece os melhoramentos efetuados no languageVersion 2.0.
Para utilizar 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>": {
...
}
}
}
As melhorias e alterações fornecidas com languageVersion 2.0:
- Utilize o nome simbólico no modelo JSON do ARM. Para obter mais informações, veja Utilizar o nome simbólico.
- Utilize o nome simbólico em ciclos de cópia de recursos. Veja Utilizar nome simbólico.
- Utilize o nome simbólico em
dependsOn
matrizes. Veja DependsOn e Dependa dos recursos num ciclo. - Utilize o nome simbólico em vez do nome do recurso na
reference
função. Veja a referência. - Uma função de referência() que devolve uma matriz de objetos que representam os estados de runtime de uma coleção de recursos. Veja referências.
- Utilize a propriedade de recurso "existente" para declarar recursos existentes para o ARM ler em vez de implementar um recurso. Veja Declarar recursos existentes.
- Criar tipos definidos pelo utilizador. Veja Definição do tipo.
- Restrições adicionais de validação de tipo agregado a serem utilizadas em parâmetros e saídas.
- O valor predefinido da
expressionEvaluationOptions
propriedade éinner
. O valorouter
está bloqueado. Veja Âmbito de avaliação de expressões em modelos aninhados. - A
deployment
função devolve um subconjunto limitado de propriedades. Veja implementação. - Se o recurso Implementações for utilizado numa implementação de nome simbólico, utilize apiVersion
2020-09-01
ou posterior. - Na definição de recursos, já não são necessários valores de escape duplo numa expressão. Veja Escape characters (Carateres de escape).
Passos seguintes
- 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 pode utilizar a partir de um modelo, veja Funções de modelo do ARM.
- Para combinar vários modelos durante a implementação, veja Utilizar modelos ligados e aninhados ao implementar recursos do Azure.
- Para obter recomendações sobre a criação de modelos, veja Melhores práticas de modelo do ARM.
- Para obter respostas a perguntas comuns, veja Perguntas mais frequentes sobre modelos do ARM.