Reutilizar expressões usando variáveis de modelo do Azure Resource Manager

Concluído

No cenário anterior, você decidiu usar uma expressão composta por várias funções do modelo ARM (Azure Resource Manager) a fim de criar um nome exclusivo para a conta de Armazenamento do Azure. Essa flexibilidade garante que todos os seus clientes possam usar esse modelo do ARM para as implantações deles. Mas você percebe que adicionar essa expressão em vários lugares é um problema para manter o modelo. Você decide usar uma variável para a expressão de nome da conta de armazenamento para poder definir a expressão em um local e reutilizá-la em todo o modelo.

O que é uma variável de modelo ARM?

Uma variável de modelo ARM é um constructo que mantém um valor para uso posterior. As variáveis são mais bem utilizadas quando um valor precisa ser especificado em vários locais em um modelo. Sempre que a variável é usada no modelo, o Resource Manager a substitui pelo valor resolvido.

Por exemplo, você tem uma expressão que define um valor para um local de recurso. Vários dos recursos que você definiu em seu modelo exigem um local. Você pode criar uma variável para manter a expressão de local e, em seguida, usar a variável sempre que um local for necessário.

Vantagens de usar variáveis de modelo ARM

Variáveis de modelo ARM permitem escrever uma expressão uma vez e, em seguida, usá-la em vários lugares. Além disso, a manutenção da expressão fica em apenas um lugar e o modelo fica mais legível.

Como fazer para usar variáveis de modelo ARM?

As variáveis de modelo ARM são definidas na seção variables: {} de um modelo. Por exemplo, aqui está a expressão para o nome da conta de armazenamento que você definiu na última unidade. Agora, ela está definindo o valor para a variável storageName.

"variables": {
  "storageName": "[concat(toLower(parameters('storageNamePrefix')), uniqueString(resourceGroup().id))]"
},

Em seguida, você usa a variável no modelo, onde quer que você precise do nome da conta de armazenamento:

"resources": [
  {
    "type": "Microsoft.Storage/storageAccounts",
    "name": "[variables('storageName')]",
    ...
  }
]

Recomendações para variáveis de modelo ARM

As variáveis de modelo são especificadas em minúsculas concatenadas. Elas são mais bem usadas para valores que você precisa especificar mais de uma vez, especialmente se esse valor é uma expressão complexa.

Não use a função reference na seção de variáveis de um modelo. A função reference é resolvida em tempo de execução e as variáveis são resolvidas quando o modelo é analisado. Além disso, não use variáveis para apiVersion em um recurso. A versão da API determina o esquema do recurso e, muitas vezes, não é possível alterar a versão sem alterar as propriedades do recurso.