التشغيل السريع: إنشاء مواصفات قالب وتوزيعها باستخدام Bicep

يوضح هذا التشغيل السريع كيفية إنشاء مواصفات قالب وتوزيعها باستخدام ملف Bicep. يتم توزيع مواصفات قالب إلى مجموعة موارد بحيث يمكن للأشخاص في مؤسستك توزيع الموارد في Microsoft Azure. تتيح لك مواصفات القالب مشاركة قوالب التوزيع دون الحاجة إلى منح المستخدمين حق الوصول لتغيير ملف Bicep. يستخدم مثال مواصفات القالب هذا ملف Bicep لتوزيع حساب تخزين.

عند إنشاء مواصفات قالب، يتم نقل وظائف ملف Bicep إلى JavaScript Object Notation (JSON). تستخدم مواصفات القالب JSON لتوزيع موارد Azure. حالياً، لا يمكنك استيراد ملف Bicep من مدخل Microsoft Azure لإنشاء مورد مواصفات قالب.

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

إنشاء ملف Bicep

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

يتم استخدام ملف Bicep التالي في علامتي التبويب PowerShell وCLI. تستخدم علامة التبويب ملف Bicep قالبًا مختلفًا يجمع بين Bicep وJSON لإنشاء مواصفات قالب وتوزيعها.

@allowed([
  'Premium_LRS'
  'Premium_ZRS'
  'Standard_GRS'
  'Standard_GZRS'
  'Standard_LRS'
  'Standard_RAGRS'
  'Standard_RAGZRS'
  'Standard_ZRS'
])
@description('Storage account type.')
param storageAccountType string = 'Standard_LRS'

@description('Location for all resources.')
param location string = resourceGroup().location

var storageAccountName = 'storage${uniqueString(resourceGroup().id)}'

resource storageAccount 'Microsoft.Storage/storageAccounts@2022-09-01' = {
  name: storageAccountName
  location: location
  sku: {
    name: storageAccountType
  }
  kind: 'StorageV2'
  properties: {}
}

output storageAccountNameOutput string = storageAccount.name

إنشاء مواصفات القالب

تشير مواصفات القالب إلى نوع مورد يسمى Microsoft.Resources/templateSpecs. لإنشاء مواصفات قالب، استخدم Azure CLI أو Azure PowerShell أو ملف Bicep.

يستخدم هذا المثال اسم templateSpecRG لمجموعة الموارد. يمكنك استخدام اسم مختلف، ولكنك ستحتاج إلى تغيير الأوامر.

  1. إنشاء مجموعة موارد جديدة لاحتواء مواصفات القالب.

    New-AzResourceGroup `
      -Name templateSpecRG `
      -Location westus2
    
  2. إنشاء مواصفات القالب في مجموعة الموارد تلك. إعطاء المواصفات قالب جديد اسم storageSpec.

    New-AzTemplateSpec `
      -Name storageSpec `
      -Version "1.0" `
      -ResourceGroupName templateSpecRG `
      -Location westus2 `
      -TemplateFile "C:\templates\main.bicep"
    

مواصفات قالب التوزيع

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

  1. قم بإنشاء مجموعة موارد لاحتواء حساب التخزين الجديد.

    New-AzResourceGroup `
      -Name storageRG `
      -Location westus2
    
  2. الحصول على معرف المورد من المواصفات القالب.

    $id = (Get-AzTemplateSpec -ResourceGroupName templateSpecRG -Name storageSpec -Version "1.0").Versions.Id
    
  3. نشر القالب المحدد.

    New-AzResourceGroupDeployment `
      -TemplateSpecId $id `
      -ResourceGroupName storageRG
    
  4. يمكنك توفير المعلمات تماما كما تفعل لتوزيع ملف Bicep. إعادة توزيع مواصفات القالب باستخدام معلمة لنوع حساب التخزين.

    New-AzResourceGroupDeployment `
      -TemplateSpecId $id `
      -ResourceGroupName storageRG `
      -storageAccountType Standard_GRS
    

منح حق الوصول

إذا كنت تريد السماح للمستخدمين الآخرين في مؤسستك بنشر مواصفات القالب، فستحتاج إلى منحهم حق الوصول للقراءة. يمكنك تعيين دور القارئ إلى مجموعة Microsoft Entra لمجموعة الموارد التي تحتوي على مواصفات القالب التي تريد مشاركتها. لمزيد من المعلومات، راجع البرنامج التعليمي: منح وصول مجموعة إلى موارد Azure باستخدام Azure PowerShell.

تحديث ملف Bicep

بعد إنشاء مواصفات القالب، قررت تحديث ملف Bicep. لمتابعة الأمثلة الموجودة في علامتي التبويب PowerShell أو CLI، انسخ العينة واستبدل ملف main.bicep.

تحدد المعلمة storageNamePrefix قيمة بادئة لاسم حساب التخزين. يقوم المتغير storageAccountName بتسلسل البادئة بسلسلة فريدة.

@allowed([
  'Premium_LRS'
  'Premium_ZRS'
  'Standard_GRS'
  'Standard_GZRS'
  'Standard_LRS'
  'Standard_RAGRS'
  'Standard_RAGZRS'
  'Standard_ZRS'
])
@description('Storage account type.')
param storageAccountType string = 'Standard_LRS'

@description('Location for all resources.')
param location string = resourceGroup().location

@maxLength(11)
@description('The storage account name prefix.')
param storageNamePrefix string = 'storage'

var storageAccountName = '${toLower(storageNamePrefix)}${uniqueString(resourceGroup().id)}'

resource storageAccount 'Microsoft.Storage/storageAccounts@2022-09-01' = {
  name: storageAccountName
  location: location
  sku: {
    name: storageAccountType
  }
  kind: 'StorageV2'
  properties: {}
}

output storageAccountNameOutput string = storageAccount.name

تحديث إصدار مواصفات القالب

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

  1. أنشئ إصدارًا جديدًا من مواصفات القالب.

    New-AzTemplateSpec `
      -Name storageSpec `
      -Version "2.0" `
      -ResourceGroupName templateSpecRG `
      -Location westus2 `
      -TemplateFile "C:\templates\main.bicep"
    
  2. لنشر الإصدار الجديد، احصل على معرف المورد 2.0 للإصدار.

    $id = (Get-AzTemplateSpec -ResourceGroupName templateSpecRG -Name storageSpec -Version "2.0").Versions.Id
    
  3. قم بتوزيع الإصدار الجديد، واستخدم storageNamePrefix لتحديد بادئة لاسم حساب التخزين.

    New-AzResourceGroupDeployment `
      -TemplateSpecId $id `
      -ResourceGroupName storageRG `
      -storageNamePrefix "demo"
    

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

لتنظيف الموارد التي قمت بتوزيعها في هذا التشغيل السريع، احذف كلتا مجموعتي الموارد. سيتم حذف مجموعة الموارد، ومواصفات القالب، وحسابات التخزين.

استخدم Azure CLI أو Azure PowerShell لحذف مجموعات الموارد.

Remove-AzResourceGroup -Name "templateSpecRG"

Remove-AzResourceGroup -Name "storageRG"
az group delete --name templateSpecRG

az group delete --name storageRG

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