تطبيق العلامات باستخدام قوالب ARM

توضح هذه المقالة كيفية استخدام قوالب Azure Resource Manager (قوالب ARM) لوضع علامة على الموارد ومجموعات الموارد والاشتراكات أثناء التوزيع. للحصول على توصيات العلامات والقيود، راجع استخدام العلامات لتنظيم موارد Azure والتسلسل الهرمي للإدارة.

ملاحظة

العلامات التي تضعها من خلال قالب ARM أو ملف Bicep تنطبع على أي علامات موجودة.

تطبيق القيم

ينشر المثال التالي حساب تخزين مع ثلاث علامات. يتم تعيين علامتين (DeptوEnvironment) إلى قيم حرفية. يتم تعيين علامة واحدة (LastDeployed) إلى المعلمة التي لا تفي بالتاريخ الحالي.

{
  "$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": {}
    }
  ]
}

تطبيق كائن

يمكنك تحديد معلمة عنصر تقوم بتخزين العديد من العلامات وتطبيق هذا العنصر على عنصر العلامة. يوفر هذا الأسلوب مرونة أكثر من المثال السابق، لأن الكائن يمكن أن يكون له خصائص مختلفة. تصبح كل خاصية في الكائن علامة منفصلة للمورد. يحتوي المثال التالي على معلمة باسم tagValues يتم تطبيقها على عنصر العلامة.

{
  "$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": {}
    }
  ]
}

تطبيق سلسلة JSON

لتخزين العديد من القيم في علامة واحدة، تطبق سلسلة JSON التي تمثل القيم. يتم تخزين سلسلة JSON بأكملها كعلامة واحدة لا يمكن أن تتجاوز 256 حرفًا. يحتوي المثال التالي على علامة واحدة مسماةCostCenterتحتوي على قيم متعددة من سلسلة 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": {}
    }
  ]
}

تطبيق علامات من مجموعة الموارد

لتطبيق العلامات من مجموعة الموارد على المورد، يمكنك أيضًا استخدام الوظيفة(resourceGroup) عندما تحصل على قيمة العلامة، استخدم بناء الجملة tags[tag-name] بدلاً من بناء الجملة tags.tag-name، لأن بعض الأحرف لم يتم توزيعها بشكل صحيح في الترميز النقطي.

{
  "$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": {}
    }
  ]
}

تطبيق علامات على مجموعات الموارد أو الاشتراكات

يمكنك إضافة علامات إلى مجموعة موارد أو اشتراك عن طريق نشر Microsoft.Resources/tagsنوع المورد. يمكنك تطبيق العلامات على مجموعة الموارد المستهدفة أو الاشتراك الذي تريد توزيعه. في كل مرة تقوم فيها بتوزيع القالب، تقوم باستبدال أي علامات سابقة.

{
  "$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')]"
        }
      }
    }
  ]
}

لتطبيق العلامات على مجموعة موارد، استخدم Azure PowerShell أو Azure CLI. نشر إلى مجموعة الموارد التي تريد وضع علامة.

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

لتطبيق العلامات على اشتراك، استخدم PowerShell أو Azure CLI. نشر إلى الاشتراك الذي تريد وضع علامة.

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

للمزيد من المعلومات عن عمليات التوزيع على مستوى الاشتراك، يُرجى الرجوع إلى إنشاء موارد ومجموعات موارد على مستوى الاشتراك.

يضيف القالب التالي العلامات من كائن إلى مجموعة موارد أو اشتراك.

{
  "$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')]"
      }
    }
  ]
}

الخطوات التالية