دوال النشر لقوالب ARM

يوفر Azure Resource Manager الوظائف التالية للحصول على القيم المتعلقة بالنشر الحالي لقالب Azure Resource Manager (قالب ARM):

للحصول على قيم من الموارد أو مجموعات الموارد أو الاشتراكات، راجع وظائف الموارد.

Tip

يوصى باستخدام Bicep لأنه يوفر نفس الإمكانات مثل قوالب ARM، وبناء الجملة أسهل في الاستخدام. لمعرفة المزيد، راجع deployment الدالات.

deployer

deployer()

إرجاع المعلومات حول أساس التوزيع الحالي.

في Bicep، استخدم الدالة deployer .

قيمة الإرجاع

تقوم هذه الدالة بإرجاع المعلومات حول أساس التوزيع الحالي، بما في ذلك معرف المستأجر ومعرف العنصر واسم المستخدم الأساسي:

{
  "objectId": "",
  "tenantId": "",
  "userPrincipalName": ""
}

Example

يقوم المثال التالي بإرجاع كائن التوزيع:

{
  "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
  "contentVersion": "1.0.0.0",
  "resources": [],
  "outputs": {
    "developerOutput": {
      "type": "object",
      "value": "[deployer()]"
    }
  }
}

إرجاع المثال السابق الكائن التالي:

{
  "objectId":"aaaaaaaa-0000-1111-2222-bbbbbbbbbbbb",
  "tenantId":"aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e",
  "userPrincipalName":"john.doe@contoso.com"
}

deployment

deployment()

إرجاع معلومات حول عملية النشر الحالية.

في Bicep، استخدم الدالة deployment .

قيمة الإرجاع

ترجع هذه الدالة الكائن الذي تم تمريره أثناء النشر. تختلف الخصائص في الكائن الذي تم إرجاعه استنادا إلى ما إذا كنت:

  • نشر قالب أو مواصفات قالب.
  • نشر قالب ملف محلي أو نشر قالب ملف بعيد يتم الوصول إليه من خلال URI.
  • النشر إلى مجموعة موارد أو النشر إلى أحد النطاقات الأخرى (اشتراك Azure أو مجموعات الإدارة أو المستأجرين).

عند نشر قالب محلي إلى مجموعة موارد، ترجع الدالة التنسيق التالي:

{
  "name": "",
  "properties": {
    "template": {
      "$schema": "",
      "contentVersion": "",
      "parameters": {},
      "variables": {},
      "resources": [],
      "outputs": {}
    },
    "templateHash": "",
    "parameters": {},
    "mode": "",
    "provisioningState": ""
  }
}

إذا كان القالب بعيدا، يتم تضمين الخاصية templateLink في الكائن الذي تم إرجاعه. templateLink تحتوي الخاصية على URI للقالب. التنسيق هو:

{
  "name": "",
  "properties": {
    "templateLink": {
      "uri": ""
    },
    "template": {
      "$schema": "",
      "contentVersion": "",
      "parameters": {},
      "variables": {},
      "resources": [],
      "outputs": {}
    },
    "templateHash": "",
    "parameters": {},
    "mode": "",
    "provisioningState": ""
  }
}

لمزيد من المعلومات، راجع استخدام المتغيرات لربط القوالب.

عند نشر مواصفات قالب إلى مجموعة موارد، ترجع الدالة التنسيق التالي:

{
  "name": "",
  "properties": {
    "templateLink": {
      "id": ""
    },
    "template": {
      "$schema": "",
      "contentVersion": "",
      "parameters": {},
      "variables": {},
      "resources": [],
      "outputs": {}
    },
    "templateHash": "",
    "parameters": {},
    "mode": "",
    "provisioningState": ""
  }
}

عند النشر إلى اشتراك Azure أو مجموعة إدارة أو مستأجر، فإن كائن الإرجاع يتضمن خاصيةlocation. يتم تضمين خاصية الموقع عند نشر قالب محلي أو قالب خارجي. التنسيق هو:

{
  "name": "",
  "location": "",
  "properties": {
    "template": {
      "$schema": "",
      "contentVersion": "",
      "resources": [],
      "outputs": {}
    },
    "templateHash": "",
    "parameters": {},
    "mode": "",
    "provisioningState": ""
  }
}

عند نشر قالب languageVersion 2.0 ، ترجع الدالة deployment مجموعة فرعية محدودة من الخصائص:

{
  "name": "",
  "location": "",
  "properties": {
    "template": {
      "contentVersion": "",
      "metadata": {}
    },
    "templateLink": {
      "id": "",
      "uri": ""
    }
  }
}

location يتم تضمين الخاصية فقط للنشر في الاشتراك أو مجموعة الإدارة أو نطاق المستأجر. templateLink يتم تضمين الخاصية فقط عندما يوفر المستخدم قالب مرتبط بدلا من قالب مضمن.

Remarks

يمكنك استخدام deployment() لإنشاء ارتباط إلى قالب آخر استنادا إلى URI الخاص بالقالب الأصل:

"variables": {
  "sharedTemplateUrl": "[uri(deployment().properties.templateLink.uri, 'shared-resources.json')]"
}

إذا قمت بإعادة نشر قالب من محفوظات النشر في المدخل، يتم نشر القالب كملف محلي. لم يتم إرجاع الخاصية templateLink في دالة النشر. إذا كان القالب يعتمد على templateLink لإنشاء ارتباط إلى قالب آخر، فلا تستخدم المدخل لإعادة النشر. بدلاً من ذلك، استخدم الأوامر التي استخدمتها لنشر القالب في الأصل.

Example

يقوم المثال التالي بإرجاع كائن نشر:

{
  "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
  "contentVersion": "1.0.0.0",
  "resources": [],
  "outputs": {
    "deploymentOutput": {
      "type": "object",
      "value": "[deployment()]"
    }
  }
}

إرجاع المثال السابق الكائن التالي:

{
  "name": "deployment",
  "properties": {
    "template": {
      "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
      "contentVersion": "1.0.0.0",
      "resources": [],
      "outputs": {
        "deploymentOutput": {
          "type": "Object",
          "value": "[deployment()]"
        }
      }
    },
    "templateHash": "13135986259522608210",
    "parameters": {},
    "mode": "Incremental",
    "provisioningState": "Accepted"
  }
}

لنشر اشتراك، يقوم المثال التالي بإرجاع كائن توزيع:

{
  "$schema": "https://schema.management.azure.com/schemas/2018-05-01/subscriptionDeploymentTemplate.json#",
  "contentVersion": "1.0.0.0",
  "parameters": {},
  "variables": {},
  "resources": [],
  "outputs": {
    "exampleOutput": {
      "type": "object",
      "value": "[deployment()]"
    }
  }
}

environment

environment()

إرجاع معلومات حول بيئة Azure المستخدمة للنشر. environment() الوظيفة غير مدركة لتكوينات الموارد. يمكنه إرجاع لاحقة DNS افتراضية واحدة فقط لكل نوع مورد.

في Bicep، استخدم الدالة environment .

Remarks

للاطلاع على قائمة بالبيئات المسجلة لحسابك، استخدم az cloud list أو Get-AzEnvironment.

قيمة الإرجاع

ترجع هذه الدالة خصائص البيئة Azure الحالي. يوضح المثال التالي خصائص Azure العمومية؛ قد ترجع السحب السيادية خصائص مختلفة قليلا:

{
  "name": "",
  "gallery": "",
  "graph": "",
  "portal": "",
  "graphAudience": "",
  "activeDirectoryDataLake": "",
  "batch": "",
  "media": "",
  "sqlManagement": "",
  "vmImageAliasDoc": "",
  "resourceManager": "",
  "authentication": {
    "loginEndpoint": "",
    "audiences": [
      "",
      ""
    ],
    "tenant": "",
    "identityProvider": ""
  },
  "suffixes": {
    "acrLoginServer": "",
    "azureDatalakeAnalyticsCatalogAndJob": "",
    "azureDatalakeStoreFileSystem": "",
    "azureFrontDoorEndpointSuffix": "",
    "keyvaultDns": "",
    "sqlServerHostname": "",
    "storage": ""
  }
}

Example

يقوم قالب المثال التالي بإرجاع كائن البيئة:

{
  "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
  "contentVersion": "1.0.0.0",
  "resources": [],
  "outputs": {
    "environmentOutput": {
      "type": "object",
      "value": "[environment()]"
    }
  }
}

يُرجع المثال السابق الكائن التالي عند نشره في Azure العام:

{
  "name": "AzureCloud",
  "gallery": "https://gallery.azure.com/",
  "graph": "https://graph.windows.net/",
  "portal": "https://portal.azure.com",
  "graphAudience": "https://graph.windows.net/",
  "activeDirectoryDataLake": "https://datalake.azure.net/",
  "batch": "https://batch.core.windows.net/",
  "media": "https://rest.media.azure.net",
  "sqlManagement": "https://management.core.windows.net:8443/",
  "vmImageAliasDoc": "https://raw.githubusercontent.com/Azure/azure-rest-api-specs/master/arm-compute/quickstart-templates/aliases.json",
  "resourceManager": "https://management.azure.com/",
  "authentication": {
    "loginEndpoint": "https://login.microsoftonline.com/",
    "audiences": [
      "https://management.core.windows.net/",
      "https://management.azure.com/"
    ],
    "tenant": "common",
    "identityProvider": "AAD"
  },
  "suffixes": {
    "acrLoginServer": ".azurecr.io",
    "azureDatalakeAnalyticsCatalogAndJob": "azuredatalakeanalytics.net",
    "azureDatalakeStoreFileSystem": "azuredatalakestore.net",
    "azureFrontDoorEndpointSuffix": "azurefd.net",
    "keyvaultDns": ".vault.azure.net",
    "sqlServerHostname": ".database.windows.net",
    "storage": "core.windows.net"
  }
}

parameters

parameters(parameterName)

إرجاع قيمة معلمة. يجب تعريف اسم المعلمة المحدد في قسم المعلمات في القالب.

في Bicep، راجع المعلمات مباشرة باستخدام أسمائها الرمزية.

Parameters

Parameter Required Type Description
parameterName Yes string اسم المعلمة التي يجب إرجاعها.

قيمة الإرجاع

قيمة المعلمة المحددة.

Remarks

بشكل عام، يمكنك استخدام المعلمات لتعيين قيم الموارد. يعين المثال التالي اسم موقع ويب إلى قيمة المعلمة التي تم تمريرها أثناء النشر.

"parameters": {
  "siteName": {
    "type": "string"
  }
}, "resources": [
  {
    "type": "Microsoft.Web/Sites",
    "apiVersion": "2025-03-01",
    "name": "[parameters('siteName')]",
    ...
  }
]

Example

يوضح المثال التالي استخداما مبسطا للدالة parameters :

{
  "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
  "contentVersion": "1.0.0.0",
  "parameters": {
    "stringParameter": {
      "type": "string",
      "defaultValue": "option 1"
    },
    "intParameter": {
      "type": "int",
      "defaultValue": 1
    },
    "objectParameter": {
      "type": "object",
      "defaultValue": {
        "one": "a",
        "two": "b"
      }
    },
    "arrayParameter": {
      "type": "array",
      "defaultValue": [ 1, 2, 3 ]
    },
    "crossParameter": {
      "type": "string",
      "defaultValue": "[parameters('stringParameter')]"
    }
  },
  "variables": {},
  "resources": [],
  "outputs": {
    "stringOutput": {
      "type": "string",
      "value": "[parameters('stringParameter')]"
    },
    "intOutput": {
      "type": "int",
      "value": "[parameters('intParameter')]"
    },
    "objectOutput": {
      "type": "object",
      "value": "[parameters('objectParameter')]"
    },
    "arrayOutput": {
      "type": "array",
      "value": "[parameters('arrayParameter')]"
    },
    "crossOutput": {
      "type": "string",
      "value": "[parameters('crossParameter')]"
    }
  }
}

إخراج القيم الافتراضية من المثال السابق هو:

Name Type Value
stringOutput String الخيار 1
intOutput Int 1
objectOutput Object {"واحد": "أ"، "اثنان": "ب"}
arrayOutput Array [1، 2، 3]
crossOutput String الخيار 1

لمزيد من المعلومات حول استخدام المعلمات، راجع المعلمات في قوالب ARM.

variables

variables(variableName)

إرجاع قيمة متغير. يجب تعريف اسم المتغير المحدد في قسم المتغيرات في القالب.

في Bicep، قم بالإشارة مباشرة إلى المتغيرات باستخدام أسمائها الرمزية.

Parameters

Parameter Required Type Description
variableName Yes String اسم المتغير الذي يجب إرجاعه.

قيمة الإرجاع

قيمة المتغير المحدد.

Remarks

بشكل عام، يمكنك استخدام المتغيرات لتبسيط القالب الخاص بك عن طريق إنشاء قيم معقدة مرة واحدة فقط. يقوم المثال التالي بإنشاء اسم فريد لحساب تخزين:

"variables": {
  "storageName": "[concat('storage', uniqueString(resourceGroup().id))]"
},
"resources": [
  {
    "type": "Microsoft.Storage/storageAccounts",
    "name": "[variables('storageName')]",
    ...
  },
  {
    "type": "Microsoft.Compute/virtualMachines",
    "dependsOn": [
      "[variables('storageName')]"
    ],
    ...
  }
],

Example

يقوم المثال التالي بإرجاع قيم متغيرة مختلفة:

{
  "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
  "contentVersion": "1.0.0.0",
  "parameters": {},
  "variables": {
    "var1": "myVariable",
    "var2": [ 1, 2, 3, 4 ],
    "var3": "[ variables('var1') ]",
    "var4": {
      "property1": "value1",
      "property2": "value2"
    }
  },
  "resources": [],
  "outputs": {
    "exampleOutput1": {
      "type": "string",
      "value": "[variables('var1')]"
    },
    "exampleOutput2": {
      "type": "array",
      "value": "[variables('var2')]"
    },
    "exampleOutput3": {
      "type": "string",
      "value": "[variables('var3')]"
    },
    "exampleOutput4": {
      "type": "object",
      "value": "[variables('var4')]"
    }
  }
}

إخراج القيم الافتراضية من المثال السابق هو:

Name Type Value
exampleOutput1 String myVariable
exampleOutput2 Array [1، 2، 3، 4]
exampleOutput3 String myVariable
exampleOutput4 Object {"property1": "value1"، "property2": "value2"}

لمزيد من المعلومات حول استخدام المتغيرات، راجع المتغيرات في قالب ARM.

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

لمعرفة المزيد حول الأقسام في قالب ARM، راجع بنية وبناء جملة قوالب ARM.