تكرار الإخراج في قوالب ARM
توضح هذه المقالة كيفية إنشاء أكثر من قيمة واحدة لإخراج في قالب إدارة موارد Azure (قالب ARM). بإضافة حلقة نسخ إلى قسم المخرجات في القالب، يمكنك إرجاع عدد من العناصر أثناء النشر بشكل حيوي.
يمكنك أيضاً استخدام النسخ معالموارد،خصائص في مورد، والمخرجات.
تلميح
نوصي باستخدام Bicep لأنها تقدم نفس الإمكانات التي توفرها قوالب ARM ولأن بناء الجملة أسهل في الاستخدام. لمعرفة المزيد، راجع التكرارات الحلقية.
بناء الجملة
قم بإضافة copy
العنصر إلى قسم الإخراج من القالب الخاص بك لإرجاع عدد من العناصر. يحتوي عنصر النسخ على التنسيق العام التالي:
"copy": {
"count": <number-of-iterations>,
"input": <values-for-the-output>
}
تحددcount
الخاصية عدد التكرارات التي تريدها للمتغير.
تحددinput
الخاصية الخصائص التي تريد تكرارها. إنشاء صفيف من العناصر التي تم إنشاؤها من القيمة فيinput
الخاصية. يمكن أن يكون خاصية واحدة (مثل سلسلة)، أو عنصر بخصائص عدة.
حدود النسخ
لا يمكن أن يتجاوز العدد 800.
لا يمكن أن يكون العدد رقماً سالباً. يمكن أن يكون صفراً إذا قمت بتوزيع القالب باستخدام إصدار حديث من Azure CLI، أو PowerShell، أو REST API. تحديداً، يجب عليك استخدام:
- Azure PowerShell2.6أو أحدث
- Azure CLI2.0.74أو أحدث
- إصدار REST API 2019-05-10 أو أحدث
- في عمليات التوزيع المرتبطيجب استخدام إصدار API2019-05-10أو أحدث لنوع مورد التوزيع
لا تدعم الإصدارات السابقة من PowerShell وCLI وAPI REST صفرا للعد.
تكرار المخرجات
ينشئ المثال التالي عددا متغيرا من حسابات التخزين ويقوم بإرجاع نقطة نهاية لكل حساب تخزين:
{
"$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"parameters": {
"storageCount": {
"type": "int",
"defaultValue": 2
},
"location": {
"type": "string",
"defaultValue": "[resourceGroup().location]"
}
},
"variables": {
"baseName": "[format('storage{0}', uniqueString(resourceGroup().id))]"
},
"resources": [
{
"copy": {
"name": "storagecopy",
"count": "[parameters('storageCount')]"
},
"type": "Microsoft.Storage/storageAccounts",
"apiVersion": "2022-09-01",
"name": "[format('{0}{1}', copyIndex(), variables('baseName'))]",
"location": "[parameters('location')]",
"sku": {
"name": "Standard_LRS"
},
"kind": "Storage",
"properties": {}
}
],
"outputs": {
"storageEndpoints": {
"type": "array",
"copy": {
"count": "[parameters('storageCount')]",
"input": "[reference(format('{0}{1}', copyIndex(), variables('baseName'))).primaryEndpoints.blob]"
}
}
}
}
يرجع القالب السابق صفيف بالقيم التالية:
[
"https://0storagecfrbqnnmpeudi.blob.core.windows.net/",
"https://1storagecfrbqnnmpeudi.blob.core.windows.net/"
]
المثال التالي بإرجاع ثلاث خصائص من حسابات التخزين الجديدة.
{
"$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"parameters": {
"storageCount": {
"type": "int",
"defaultValue": 2
},
"location": {
"type": "string",
"defaultValue": "[resourceGroup().location]"
}
},
"variables": {
"baseName": "[format('storage{0}', uniqueString(resourceGroup().id))]"
},
"resources": [
{
"copy": {
"name": "storagecopy",
"count": "[length(range(0, parameters('storageCount')))]"
},
"type": "Microsoft.Storage/storageAccounts",
"apiVersion": "2022-09-01",
"name": "[format('{0}{1}', range(0, parameters('storageCount'))[copyIndex()], variables('baseName'))]",
"location": "[parameters('location')]",
"sku": {
"name": "Standard_LRS"
},
"kind": "Storage",
"properties": {}
}
],
"outputs": {
"storageInfo": {
"type": "array",
"copy": {
"count": "[length(range(0, parameters('storageCount')))]",
"input": {
"id": "[resourceId('Microsoft.Storage/storageAccounts', format('{0}{1}', copyIndex(), variables('baseName')))]",
"blobEndpoint": "[reference(format('{0}{1}', copyIndex(), variables('baseName'))).primaryEndpoints.blob]",
"status": "[reference(format('{0}{1}', copyIndex(), variables('baseName'))).statusOfPrimary]"
}
}
}
}
}
يقوم المثال السابق بإرجاع صفيف بالقيم التالية:
[
{
"id": "/subscriptions/00000000/resourceGroups/demoGroup/providers/Microsoft.Storage/storageAccounts/0storagecfrbqnnmpeudi",
"blobEndpoint": "https://0storagecfrbqnnmpeudi.blob.core.windows.net/",
"status": "available"
},
{
"id": "/subscriptions/00000000/resourceGroups/demoGroup/providers/Microsoft.Storage/storageAccounts/1storagecfrbqnnmpeudi",
"blobEndpoint": "https://1storagecfrbqnnmpeudi.blob.core.windows.net/",
"status": "available"
}
]
الخطوات التالية
- لمراجعة برنامج تعليمي، راجعالبرنامج التعليمي: إنشاء مثيلات الموارد المتعددة باستخدام قوالب ARM.
- لاستخدامات أخرى من حلقة النسخ، راجع:
- للتعرف على أقسام القالب، راجعفهم بنية وبناء جملة قوالب ARM.
- لمعرفة كيفية توزيع القوالب، راجعتوزيع الموارد باستخدام قوالب ARM وAzure PowerShell.