Tutorial: Adicionar etiquetas no seu modelo do ARM
Neste tutorial, vai aprender a adicionar etiquetas aos recursos no modelo de Resource Manager do Azure (modelo do ARM). As etiquetas são elementos de metadados compostos por pares chave-valor que o ajudam a identificar recursos e a aparecer nos relatórios de custos. Esta instrução demora 8 minutos a ser concluída.
Pré-requisitos
Recomendamos que conclua o tutorial sobre Modelos de Início Rápido, mas não é necessário.
Tem de ter o Visual Studio Code com a extensão Resource Manager Tools e Azure PowerShell ou a Interface de Command-Line do Azure (CLI). Para obter mais informações, veja ferramentas de modelo.
Rever modelo
O modelo anterior implementou uma conta de armazenamento, um plano Serviço de Aplicações e uma aplicação Web.
{
"$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"parameters": {
"storagePrefix": {
"type": "string",
"minLength": 3,
"maxLength": 11
},
"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]"
},
"appServicePlanName": {
"type": "string",
"defaultValue": "exampleplan"
},
"webAppName": {
"type": "string",
"metadata": {
"description": "Base name of the resource such as web app name and app service plan "
},
"minLength": 2
},
"linuxFxVersion": {
"type": "string",
"defaultValue": "php|7.0",
"metadata": {
"description": "The Runtime stack of current web app"
}
}
},
"variables": {
"uniqueStorageName": "[concat(parameters('storagePrefix'), uniqueString(resourceGroup().id))]",
"webAppPortalName": "[concat(parameters('webAppName'), uniqueString(resourceGroup().id))]"
},
"resources": [
{
"type": "Microsoft.Storage/storageAccounts",
"apiVersion": "2021-09-01",
"name": "[variables('uniqueStorageName')]",
"location": "[parameters('location')]",
"sku": {
"name": "[parameters('storageSKU')]"
},
"kind": "StorageV2",
"properties": {
"supportsHttpsTrafficOnly": true
}
},
{
"type": "Microsoft.Web/serverfarms",
"apiVersion": "2021-03-01",
"name": "[parameters('appServicePlanName')]",
"location": "[parameters('location')]",
"sku": {
"name": "B1",
"tier": "Basic",
"size": "B1",
"family": "B",
"capacity": 1
},
"kind": "linux",
"properties": {
"perSiteScaling": false,
"reserved": true,
"targetWorkerCount": 0,
"targetWorkerSizeId": 0
}
},
{
"type": "Microsoft.Web/sites",
"apiVersion": "2021-03-01",
"name": "[variables('webAppPortalName')]",
"location": "[parameters('location')]",
"dependsOn": [
"[resourceId('Microsoft.Web/serverfarms', parameters('appServicePlanName'))]"
],
"kind": "app",
"properties": {
"serverFarmId": "[resourceId('Microsoft.Web/serverfarms', parameters('appServicePlanName'))]",
"siteConfig": {
"linuxFxVersion": "[parameters('linuxFxVersion')]"
}
}
}
],
"outputs": {
"storageEndpoint": {
"type": "object",
"value": "[reference(variables('uniqueStorageName')).primaryEndpoints]"
}
}
}
Depois de implementar estes recursos, poderá ter de controlar os custos e encontrar recursos que pertencem a uma categoria. Pode adicionar etiquetas para ajudar a resolver estes problemas.
Adicionar etiquetas
Coloca etiquetas nos recursos para adicionar valores que o ajudam a identificar a sua utilização. Pode adicionar etiquetas que listam o ambiente e o projeto. Também pode adicioná-los para identificar um centro de custos ou a equipa proprietária do recurso. Adicione os valores que façam sentido para a sua organização.
O exemplo seguinte realça as alterações ao modelo. 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": {
"storagePrefix": {
"type": "string",
"minLength": 3,
"maxLength": 11
},
"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]"
},
"appServicePlanName": {
"type": "string",
"defaultValue": "exampleplan"
},
"webAppName": {
"type": "string",
"metadata": {
"description": "Base name of the resource such as web app name and app service plan "
},
"minLength": 2
},
"linuxFxVersion": {
"type": "string",
"defaultValue": "php|7.0",
"metadata": {
"description": "The Runtime stack of current web app"
}
},
"resourceTags": {
"type": "object",
"defaultValue": {
"Environment": "Dev",
"Project": "Tutorial"
}
}
},
"variables": {
"uniqueStorageName": "[concat(parameters('storagePrefix'), uniqueString(resourceGroup().id))]",
"webAppPortalName": "[concat(parameters('webAppName'), uniqueString(resourceGroup().id))]"
},
"resources": [
{
"type": "Microsoft.Storage/storageAccounts",
"apiVersion": "2021-09-01",
"name": "[variables('uniqueStorageName')]",
"location": "[parameters('location')]",
"tags": "[parameters('resourceTags')]",
"sku": {
"name": "[parameters('storageSKU')]"
},
"kind": "StorageV2",
"properties": {
"supportsHttpsTrafficOnly": true
}
},
{
"type": "Microsoft.Web/serverfarms",
"apiVersion": "2021-03-01",
"name": "[parameters('appServicePlanName')]",
"location": "[parameters('location')]",
"tags": "[parameters('resourceTags')]",
"sku": {
"name": "B1",
"tier": "Basic",
"size": "B1",
"family": "B",
"capacity": 1
},
"kind": "linux",
"properties": {
"perSiteScaling": false,
"reserved": true,
"targetWorkerCount": 0,
"targetWorkerSizeId": 0
}
},
{
"type": "Microsoft.Web/sites",
"apiVersion": "2021-03-01",
"name": "[variables('webAppPortalName')]",
"location": "[parameters('location')]",
"dependsOn": [
"[parameters('appServicePlanName')]"
],
"tags": "[parameters('resourceTags')]",
"kind": "app",
"properties": {
"serverFarmId": "[resourceId('Microsoft.Web/serverfarms', parameters('appServicePlanName'))]",
"siteConfig": {
"linuxFxVersion": "[parameters('linuxFxVersion')]"
}
}
}
],
"outputs": {
"storageEndpoint": {
"type": "object",
"value": "[reference(variables('uniqueStorageName')).primaryEndpoints]"
}
}
}
Implementar o modelo
Está na altura de implementar o modelo e ver os resultados.
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 addtags `
-ResourceGroupName myResourceGroup `
-TemplateFile $templateFile `
-storagePrefix "store" `
-storageSKU Standard_LRS `
-webAppName demoapp
Nota
Se a implementação falhar, utilize o verbose
comutador para obter informações sobre os recursos que está a criar. 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 o grupo de recursos no qual implementou.
Selecione um dos recursos, como o recurso da conta de armazenamento. Verá que agora tem etiquetas.
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 adicionar etiquetas aos recursos. No próximo tutorial, irá aprender a utilizar ficheiros de parâmetros para simplificar a transmissão de valores para o modelo.