Stosowanie tagów przy użyciu szablonów usługi ARM
W tym artykule opisano sposób używania szablonów usługi Azure Resource Manager (ARM) do tagowania zasobów, grup zasobów i subskrypcji podczas wdrażania. Aby uzyskać zalecenia i ograniczenia dotyczące tagów, zobacz Organizowanie zasobów platformy Azure i hierarchii zarządzania przy użyciu tagów.
Uwaga
Tagi stosowane za pomocą szablonu usługi ARM lub pliku Bicep zastępują wszystkie istniejące tagi.
Stosowanie wartości
Poniższy przykład umożliwia wdrożenie konta magazynu z trzema tagami. Dwa tagi (Dept
i Environment
) są ustawione na wartości literału. Jeden tag (LastDeployed
) jest ustawiony na parametr, który domyślnie jest ustawiony na bieżącą datę.
{
"$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"parameters": {
"utcShort": {
"type": "string",
"defaultValue": "[utcNow('d')]"
},
"location": {
"type": "string",
"defaultValue": "[resourceGroup().location]"
}
},
"resources": [
{
"type": "Microsoft.Storage/storageAccounts",
"apiVersion": "2021-04-01",
"name": "[concat('storage', uniqueString(resourceGroup().id))]",
"location": "[parameters('location')]",
"sku": {
"name": "Standard_LRS"
},
"kind": "Storage",
"tags": {
"Dept": "Finance",
"Environment": "Production",
"LastDeployed": "[parameters('utcShort')]"
},
"properties": {}
}
]
}
Stosowanie obiektu
Można zdefiniować parametr obiektu, który przechowuje kilka tagów i zastosować ten obiekt do elementu tagu. Takie podejście zapewnia większą elastyczność niż w poprzednim przykładzie, ponieważ obiekt może mieć różne właściwości. Każda właściwość obiektu będzie osobnym tagiem dla zasobu. Poniższy przykład zawiera parametr o nazwie tagValues
, który jest stosowany do elementu tagu.
{
"$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"parameters": {
"location": {
"type": "string",
"defaultValue": "[resourceGroup().location]"
},
"tagValues": {
"type": "object",
"defaultValue": {
"Dept": "Finance",
"Environment": "Production"
}
}
},
"resources": [
{
"type": "Microsoft.Storage/storageAccounts",
"apiVersion": "2021-04-01",
"name": "[concat('storage', uniqueString(resourceGroup().id))]",
"location": "[parameters('location')]",
"sku": {
"name": "Standard_LRS"
},
"kind": "Storage",
"tags": "[parameters('tagValues')]",
"properties": {}
}
]
}
Stosowanie ciągu JSON
Aby przechowywać wiele wartości w jednym tagu, zastosuj ciąg JSON reprezentujący te wartości. Cały ciąg JSON jest przechowywany jako jeden tag, który nie może przekraczać 256 znaków. Poniższy przykład zawiera pojedynczy tag o nazwie CostCenter
, który zawiera kilka wartości z ciągu JSON:
{
"$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"parameters": {
"location": {
"type": "string",
"defaultValue": "[resourceGroup().location]"
}
},
"resources": [
{
"type": "Microsoft.Storage/storageAccounts",
"apiVersion": "2021-04-01",
"name": "[concat('storage', uniqueString(resourceGroup().id))]",
"location": "[parameters('location')]",
"sku": {
"name": "Standard_LRS"
},
"kind": "Storage",
"tags": {
"CostCenter": "{\"Dept\":\"Finance\",\"Environment\":\"Production\"}"
},
"properties": {}
}
]
}
Stosowanie tagów z grupy zasobów
Aby zastosować tagi z grupy zasobów do zasobu, użyj funkcji resourceGroup(). Gdy uzyskasz wartość tagu, użyj tags[tag-name]
składni zamiast tags.tag-name
składni, ponieważ niektóre znaki nie są poprawnie analizowane w notacji kropkowej.
{
"$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"parameters": {
"location": {
"type": "string",
"defaultValue": "[resourceGroup().location]"
}
},
"resources": [
{
"type": "Microsoft.Storage/storageAccounts",
"apiVersion": "2021-04-01",
"name": "[concat('storage', uniqueString(resourceGroup().id))]",
"location": "[parameters('location')]",
"sku": {
"name": "Standard_LRS"
},
"kind": "Storage",
"tags": {
"Dept": "[resourceGroup().tags['Dept']]",
"Environment": "[resourceGroup().tags['Environment']]"
},
"properties": {}
}
]
}
Stosowanie tagów do grup zasobów lub subskrypcji
Tagi można dodawać do grupy zasobów lub subskrypcji, wdrażając Microsoft.Resources/tags
typ zasobu. Tagi można zastosować do docelowej grupy zasobów lub subskrypcji, którą chcesz wdrożyć. Za każdym razem, gdy wdrażasz szablon, zastępujesz wszystkie poprzednie tagi.
{
"$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"parameters": {
"tagName": {
"type": "string",
"defaultValue": "TeamName"
},
"tagValue": {
"type": "string",
"defaultValue": "AppTeam1"
}
},
"resources": [
{
"type": "Microsoft.Resources/tags",
"name": "default",
"apiVersion": "2021-04-01",
"properties": {
"tags": {
"[parameters('tagName')]": "[parameters('tagValue')]"
}
}
}
]
}
Aby zastosować tagi do grupy zasobów, użyj Azure PowerShell lub interfejsu wiersza polecenia platformy Azure. Wdróż w grupie zasobów, którą chcesz otagować.
New-AzResourceGroupDeployment -ResourceGroupName exampleGroup -TemplateFile https://raw.githubusercontent.com/Azure/azure-docs-json-samples/master/azure-resource-manager/tags.json
az deployment group create --resource-group exampleGroup --template-uri https://raw.githubusercontent.com/Azure/azure-docs-json-samples/master/azure-resource-manager/tags.json
Aby zastosować tagi do subskrypcji, użyj programu PowerShell lub interfejsu wiersza polecenia platformy Azure. Wdróż w subskrypcji, którą chcesz otagować.
New-AzSubscriptionDeployment -name tagresourcegroup -Location westus2 -TemplateUri https://raw.githubusercontent.com/Azure/azure-docs-json-samples/master/azure-resource-manager/tags.json
az deployment sub create --name tagresourcegroup --location westus2 --template-uri https://raw.githubusercontent.com/Azure/azure-docs-json-samples/master/azure-resource-manager/tags.json
Aby uzyskać więcej informacji na temat wdrożeń subskrypcji, zobacz Tworzenie grup zasobów i zasobów na poziomie subskrypcji.
Poniższy szablon dodaje tagi z obiektu do grupy zasobów lub subskrypcji.
{
"$schema": "https://schema.management.azure.com/schemas/2018-05-01/subscriptionDeploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"parameters": {
"tags": {
"type": "object",
"defaultValue": {
"TeamName": "AppTeam1",
"Dept": "Finance",
"Environment": "Production"
}
}
},
"resources": [
{
"type": "Microsoft.Resources/tags",
"apiVersion": "2021-04-01",
"name": "default",
"properties": {
"tags": "[parameters('tags')]"
}
}
]
}
Następne kroki
- Nie wszystkie typy zasobów obsługują tagi. Aby określić, czy można zastosować tag do typu zasobu, zobacz Obsługa tagów dla zasobów platformy Azure.
- Aby uzyskać zalecenia dotyczące implementowania strategii tagowania, zobacz Przewodnik po decyzjach dotyczących nazewnictwa i tagowania zasobów.
- Aby uzyskać zalecenia i ograniczenia dotyczące tagów, zobacz Organizowanie zasobów platformy Azure i hierarchii zarządzania przy użyciu tagów.