Tutorial: Adicionar funções de modelo ao modelo do ARM
Neste tutorial, vai aprender a adicionar funções de modelo ao modelo do Azure Resource Manager (modelo do ARM). Utiliza funções para construir valores dinamicamente. Além destas funções de modelo fornecidas pelo sistema, também pode criar funções definidas pelo utilizador. Este tutorial demora 7 minutos a concluir.
Pré-requisitos
Recomendamos que conclua o tutorial sobre parâmetros, mas não é necessário.
Tem de ter o Visual Studio Code instalado e a trabalhar com a extensão do Azure Resource Manager Tools e Azure PowerShell ou a CLI do Azure. Para obter mais informações, veja ferramentas de modelo.
Rever modelo
No final do tutorial anterior, o modelo tinha o seguinte ficheiro JSON:
{
"$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"parameters": {
"storageName": {
"type": "string",
"minLength": 3,
"maxLength": 24
},
"storageSKU": {
"type": "string",
"defaultValue": "Standard_LRS",
"allowedValues": [
"Standard_LRS",
"Standard_GRS",
"Standard_RAGRS",
"Standard_ZRS",
"Premium_LRS",
"Premium_ZRS",
"Standard_GZRS",
"Standard_RAGZRS"
]
}
},
"resources": [
{
"type": "Microsoft.Storage/storageAccounts",
"apiVersion": "2021-09-01",
"name": "[parameters('storageName')]",
"location": "eastus",
"sku": {
"name": "[parameters('storageSKU')]"
},
"kind": "StorageV2",
"properties": {
"supportsHttpsTrafficOnly": true
}
}
]
}
Suponha que codifica a localização da conta de armazenamento do Azure para eastus, mas tem de implementá-la noutra região. Tem de adicionar um parâmetro para adicionar flexibilidade ao modelo e permitir que tenha uma localização diferente.
Utilizar função
Se tiver concluído o tutorial de parâmetros, utilizou uma função. Quando adicionou "[parameters('storageName')]"
, utilizou a função parâmetros . Os parênteses indicam que a sintaxe dentro dos parênteses é uma expressão de modelo. Resource Manager resolve a sintaxe em vez de a tratar como um valor literal.
As funções adicionam flexibilidade ao seu modelo ao obterem dinamicamente valores durante a implementação. Neste tutorial, vai utilizar uma função para obter a localização de implementação do grupo de recursos.
O exemplo seguinte realça as alterações para adicionar um parâmetro chamado location
. O valor predefinido do parâmetro chama a função resourceGroup . Esta função devolve um objeto com informações sobre o grupo de recursos implementado. Uma das propriedades do objeto é uma propriedade de localização. Quando utiliza o valor predefinido, a conta de armazenamento e o grupo de recursos têm a mesma localização. Os recursos dentro de um grupo têm localizações diferentes.
Copie todo o ficheiro e substitua o modelo pelo respetivo conteúdo.
{
"$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"parameters": {
"storageName": {
"type": "string",
"minLength": 3,
"maxLength": 24
},
"storageSKU": {
"type": "string",
"defaultValue": "Standard_LRS",
"allowedValues": [
"Standard_LRS",
"Standard_GRS",
"Standard_RAGRS",
"Standard_ZRS",
"Premium_LRS",
"Premium_ZRS",
"Standard_GZRS",
"Standard_RAGZRS"
]
},
"location": {
"type": "string",
"defaultValue": "[resourceGroup().location]"
}
},
"resources": [
{
"type": "Microsoft.Storage/storageAccounts",
"apiVersion": "2021-09-01",
"name": "[parameters('storageName')]",
"location": "[parameters('location')]",
"sku": {
"name": "[parameters('storageSKU')]"
},
"kind": "StorageV2",
"properties": {
"supportsHttpsTrafficOnly": true
}
}
]
}
Implementar o modelo
Nos tutoriais anteriores, criou uma conta de armazenamento nos E.U.A. Leste, mas o seu grupo de recursos é criado nos E.U.A. Central. Para este tutorial, vai criar uma conta de armazenamento na mesma região que o grupo de recursos. Utilize o valor predefinido para a localização, pelo que não precisa de fornecer esse valor de parâmetro. Tem de fornecer um novo nome para a conta de armazenamento porque está a criar uma conta de armazenamento numa localização diferente. Utilize store2, por exemplo, como o prefixo em vez de store1.
Se ainda não criou o grupo de recursos, veja Criar grupo de recursos. O exemplo pressupõe que definiu a templateFile
variável para o caminho para o ficheiro de modelo, conforme mostrado no primeiro tutorial.
New-AzResourceGroupDeployment `
-Name addlocationparameter `
-ResourceGroupName myResourceGroup `
-TemplateFile $templateFile `
-storageName "{new-unique-name}"
Nota
Se a implementação falhar, utilize o verbose
comutador para obter informações sobre os recursos que estão a ser criados. Utilize o debug
comutador para obter mais informações sobre a depuração.
Verificar a implementação
Pode verificar a implementação ao explorar o grupo de recursos a partir do portal do Azure.
- Inicie sessão no portal do Azure.
- No menu esquerdo, selecione Grupos de recursos.
- Selecione a caixa à esquerda de myResourceGroup e selecione myResourceGroup.
- Selecione o grupo de recursos que criou. O nome predefinido é myResourceGroup.
- Repare que a conta de armazenamento implementada e o grupo de recursos têm a mesma localização.
Limpar os recursos
Se estiver a avançar para o próximo tutorial, não precisa de eliminar o grupo de recursos.
Se estiver a parar agora, poderá querer eliminar o grupo de recursos.
- No portal do Azure, selecione Grupos de recursos no menu esquerdo.
- Escreva o nome do grupo de recursos no campo de texto Filtro para qualquer campo...
- Selecione a caixa junto a myResourceGroup e selecione myResourceGroup ou o nome do grupo de recursos.
- Selecione Eliminar grupo de recursos no menu superior.
Passos seguintes
Neste tutorial, vai utilizar uma função para definir o valor predefinido para um parâmetro. Nesta série de tutoriais, continua a utilizar funções. No final da série, irá adicionar funções a todas as secções de modelo.