التشغيل السريع: إنشاء مثيلات موارد متعددة في Bicep

تعلم كيفية استخدام بناء جمل for المختلفة لإنشاء مثيلات موارد متعددة في Bicep. على الرغم من أن هذه المقالة تظهر فقط إنشاء مثيلات موارد متعددة، يمكن استخدام نفس الأساليب لتحديد نسخ الوحدة النمطية، أو المتغير، أو الخاصية، أو الإخراج. لمعرفة المزيد، راجع التكرار الحلقي لـ Bicep.

تحتوي هذه المقالة على المواضيع التالية:

المتطلبات الأساسية

إذا لم يكن لديك اشتراك في Azure، فأنشئ free account قبل البدء.

ولإعداد بيئتك بهدف تطوير Bicep، راجع ⁧⁩تثبيت أدوات Bicep⁧⁩. بعد الانتهاء من هذه الخطوات، سيكون لديك ⁧⁩Visual Studio Code⁧⁩⁧⁩وامتداد Bicep⁧⁩. لديك أيضًا إما أحدث ⁧⁩Azure CLI⁧⁩ أو أحدث ⁧⁩وحدة Azure PowerShell⁧⁩.

إنشاء مثيل أحادي

في هذا القسم، يمكنك تحديد ملف Bicep لإنشاء حساب تخزين، ومن ثم توزيع ملف Bicep. توفر المقاطع اللاحقة عينات Bicep لبناء جمل for المختلفة. يمكنك استخدام نفس أسلوب التوزيع لتوزيع هذه العينات وتجربتها. إذا فشل التوزيع، فمن المحتمل أن يكون أحد السببين:

  • اسم حساب التخزين طويل جداً. يجب أن تكون أسماء حسابات التخزين بين 3 أحرف و24 حرفًا في الطول وقد تحتوي على أرقام وأحرف صغيرة فقط.
  • اسم حساب التخزين غير فريد. يجب أن يكون اسم حساب التخزين الخاص بك فريدًا داخل Azure.

يحدد ملف Bicep التالي حساب تخزين واحداً:

param rgLocation string = resourceGroup().location

resource createStorage 'Microsoft.Storage/storageAccounts@2022-09-01' = {
  name: 'storage${uniqueString(resourceGroup().id)}'
  location: rgLocation
  sku: {
    name: 'Standard_LRS'
  }
  kind: 'StorageV2'
}

احفظ ملف Bicep محلياً، ثم استخدم Azure CLI أو Azure PowerShell لتوزيعه:

resourceGroupName = "{provide-a-resource-group-name}"
templateFile="{provide-the-path-to-the-bicep-file}"

az group create --name $resourceGroupName --location eastus

az deployment group create --resource-group $resourceGroupName --template-file $templateFile

استخدام فهرس عدد صحيح

يُستخدم التكرار الحلقي for مع فهرس في العينة التالية لإنشاء حسابين للتخزين:

param rgLocation string = resourceGroup().location
param storageCount int = 2

resource createStorages 'Microsoft.Storage/storageAccounts@2022-09-01' = [for i in range(0, storageCount): {
  name: '${i}storage${uniqueString(resourceGroup().id)}'
  location: rgLocation
  sku: {
    name: 'Standard_LRS'
  }
  kind: 'StorageV2'
}]

output names array = [for i in range(0,storageCount) : {
  name: createStorages[i].name
} ]

يُستخدم رقم الفهرس كجزء من اسم حساب التخزين. بعد توزيع ملف Bicep، يمكنك الحصول على حسابي تخزين مشابهين لـ:

استخدم فهرس عدد صحيح مع 0 كالرقم الأول

النطاق الداخلي ()، الرقم الأول هو رقم البداية، والرقم الثاني هو عدد مرات تشغيل التكرار الحلقي. لذلك إذا قمت بتغييره إلى نطاق (3،2)، ستحصل أيضاً على حسابي تخزين:

استخدم فهرس عدد صحيح مع 3 كالرقم الأول

يوضح إخراج العينة السابقة كيفية الرجوع إلى الموارد التي تم إنشاؤها في التكرار الحلقي. المخرجات مشابهة لـ:

"outputs": {
  "names": {
    "type": "Array",
    "value": [
      {
        "name": "0storage52iyjssggmvue"
      },
      {
        "name": "1storage52iyjssggmvue"
      }
    ]
  }
},

استخدام عناصر الصفيف

يمكنك إجراء تكرار حلقي عبر الصفيف. تعرض العينة التالية صفيف من السلاسل.

param rgLocation string = resourceGroup().location
param storageNames array = [
  'contoso'
  'fabrikam'
]

resource createStorages 'Microsoft.Storage/storageAccounts@2022-09-01' = [for name in storageNames: {
  name: '${name}str${uniqueString(resourceGroup().id)}'
  location: rgLocation
  sku: {
    name: 'Standard_LRS'
  }
  kind: 'StorageV2'
}]

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

استخدم صفيف خاص بالسلاسل

يمكنك أيضاً إجراء تكرار حلقي من خلال صفيف من العناصر. لا يقوم التكرار الحلقي بتخصيص أسماء حسابات التخزين فحسب، بل يقوم أيضاً بتكوين وحدات SKU.

param rgLocation string = resourceGroup().location
param storages array = [
  {
    name: 'contoso'
    skuName: 'Standard_LRS'
  }
  {
    name: 'fabrikam'
    skuName: 'Premium_LRS'
  }
]

resource createStorages 'Microsoft.Storage/storageAccounts@2022-09-01' = [for storage in storages: {
  name: '${storage.name}obj${uniqueString(resourceGroup().id)}'
  location: rgLocation
  sku: {
    name: storage.skuName
  }
  kind: 'StorageV2'
}]

ينشئ التكرار الحلقي حسابي تخزين. إن SKU الخاصة بحساب التخزين الذي يحمل اسماً يبدأ fabrikam هي Premium_LRS.

استخدم صفيف خاص بالسلاسل

استخدام الصفيف والفهرس

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

param rgLocation string = resourceGroup().location
param storageNames array = [
  'contoso'
  'fabrikam'
]

resource createStorages 'Microsoft.Storage/storageAccounts@2022-09-01' = [for (name, i) in storageNames: {
  name: '${i}${name}${uniqueString(resourceGroup().id)}'
  location: rgLocation
  sku: {
    name: 'Standard_LRS'
  }
  kind: 'StorageV2'
}]

بعد توزيع العينة السابقة، يمكنك إنشاء حسابين للتخزين مشابهين لـ:

استخدم صفيف سلاسل وفهرس أرقام

استخدام عنصر القاموس

للتكرار عبر العناصر الموجودة في عنصر قاموس، استخدم"وظيفة العناصر"، التي تحول العنصر إلى صفيف. استخدمvalue"الخاصية" للحصول على خصائص العناصر.

param rgLocation string = resourceGroup().location

param storageConfig object = {
  storage1: {
    name: 'contoso'
    skuName: 'Standard_LRS'
  }
  storage2: {
    name: 'fabrikam'
    skuName: 'Premium_LRS'
  }
}

resource createStorages 'Microsoft.Storage/storageAccounts@2022-09-01' = [for config in items(storageConfig): {
  name: '${config.value.name}${uniqueString(resourceGroup().id)}'
  location: rgLocation
  sku: {
    name: config.value.skuName
  }
  kind: 'StorageV2'
}]

ينشئ التكرار الحلقي حسابي تخزين. إن SKU الخاصة بحساب التخزين الذي يحمل اسماً يبدأ fabrikam هي Premium_LRS.

استخدام عنصر القاموس

تكرار حلقي مع شرط

للموارد والوحدات النمطية، يمكنك إضافة التعبير if مع بناء جملة التكرار الحلقي لتوزيع المجموعة بشكل مشروط.

param rgLocation string = resourceGroup().location
param storageCount int = 2
param createNewStorage bool = true

resource createStorages 'Microsoft.Storage/storageAccounts@2022-09-01' = [for i in range(0, storageCount): if(createNewStorage) {
  name: '${i}storage${uniqueString(resourceGroup().id)}'
  location: rgLocation
  sku: {
    name: 'Standard_LRS'
  }
  kind: 'StorageV2'
}]

للمزيد من المعلومات، راجع التوزيع المشروط في Bicep.

تنظيف الموارد

عندما لم تعد هناك حاجة إلى موارد Azure، استخدم الوحدة Azure CLI أو Azure PowerShell لحذف مجموعة موارد بداية سريعة.

resourceGroupName = "{provide-the-resource-group-name}"

az group delete --name $resourceGroupName

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