Руководство по добавлению тегов в шаблон ARM
Из этого учебника вы узнаете, как добавлять теги к ресурсам в шаблоне Azure Resource Manager. Теги — это элементы метаданных, состоящие из пар ключ — значение, которые помогают определять ресурсы и отображаются в отчетах о затратах. Для выполнения этой инструкции потребуется около 8 минут.
Предварительные требования
Мы советуем выполнить инструкции из учебника по шаблонам быстрого запуска, но это необязательно.
Необходимо установить Visual Studio Code с расширением инструментов Resource Manager, а также либо Azure PowerShell, либо интерфейс командной строки Azure (CLI). Дополнительные сведения см. в разделе об инструментах шаблона.
Проверка шаблона
Предыдущий шаблон развернул учетную запись хранения, план службы приложений и веб-приложение.
{
"$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]"
}
}
}
После развертывания этих ресурсов вам может потребоваться отследить затраты и выполнить поиск ресурсов, принадлежащих категории. Для решения этих задач можно добавить теги.
Добавление тегов
Вы добавляете теги в ресурсы, чтобы использовать значения, помогающие определить их использование. Можно добавить теги, в которых перечислены среда и проект. Вы также можете их добавить для определения центра затрат или группы, которой принадлежит ресурс. Добавьте любые значения, имеющие смысл для вашей организации.
В следующем примере показаны изменения шаблона. Скопируйте весь файл и замените шаблон на его содержимое.
{
"$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]"
}
}
}
Развертывание шаблона
Пора развернуть шаблон и просмотреть результаты.
Если вы еще не создали группу ресурсов, см. этот раздел. В этом примере предполагается, что для переменной templateFile
указан путь к файлу шаблона, как показано в первом учебнике.
New-AzResourceGroupDeployment `
-Name addtags `
-ResourceGroupName myResourceGroup `
-TemplateFile $templateFile `
-storagePrefix "store" `
-storageSKU Standard_LRS `
-webAppName demoapp
Примечание
Если развертывание завершается сбоем, используйте параметр verbose
, чтобы получить сведения о создаваемых ресурсах. Используйте параметр debug
, чтобы получить дополнительные сведения для отладки.
Проверка развертывания
Чтобы проверить развертывание, просмотрите группу ресурсов на портале Azure.
Войдите на портал Azure.
В меню слева выберите Группы ресурсов.
Выберите группу ресурсов, в которую выполнено развертывание.
Выберите один из ресурсов, например ресурс учетной записи хранения. Вы увидите, что теперь он содержит теги.
Очистка ресурсов
Если вы переходите к следующему учебнику, вам не нужно удалять группу ресурсов.
Если вы прекращаете работу, то можете удалить группу ресурсов.
- На портале Azure в меню слева выберите Группы ресурсов.
- Введите имя группы ресурсов в текстовое поле Фильтрация всех полей....
- Установите флажок рядом с myResourceGroup и выберите myResourceGroup или имя вашей группы ресурсов.
- В главном меню выберите Удалить группу ресурсов.
Дальнейшие действия
В этом учебнике вы добавите теги в ресурсы. В следующем учебнике вы узнаете, как использовать файлы параметров для упрощения передачи значений в шаблон.