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

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

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

تلميح

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

النشر

deployment()

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

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

القيمة المُرجعة

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

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

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

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

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

{
  "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": ""
    },
    "templateLink": {
      "id": "",
      "uri": ""
    }
  }
}

الملاحظات

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

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

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

مثال

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

{
  "$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()

إرجاع معلومات حول بيئة Azure المستخدمة للنشر.

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

الملاحظات

لمشاهدة قائمة بالبيئات المسجلة لحسابك، استخدم 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": ""
  }
}

مثال

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

{
  "$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(parameterName)

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

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

المعلمات

المعلمة مطلوب النوع الوصف
اسم المعلمة نعم سلسلة اسم المعلمة التي يجب إرجاعها.

القيمة المُرجعة

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

الملاحظات

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

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

مثال

يوضح المثال التالي استخداماً مبسطاً لدالة المعلمات.

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

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

الاسم النوع القيمة
stringOutput سلسلة الخيار الأول
intOutput Int 1
objectOutput العنصر {"one": "a"، "two": "b"}
arrayOutput صفيف [1، 2، 3]
crossOutput سلسلة الخيار الأول

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

متغيرات

variables(variableName)

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

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

المعلمات

المعلمة مطلوب النوع الوصف
variableName نعم سلسلة اسم المتغير الذي يجب إرجاعه.

القيمة المُرجعة

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

الملاحظات

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

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

مثال

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

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

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

الاسم النوع القيمة
exampleOutput1 سلسلة myVariable
exampleOutput2 صفيف [1، 2، 3، 4]
exampleOutput3 سلسلة myVariable
exampleOutput4 العنصر {"property1": "value1"، "property2": "value2"}

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

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