عمليات توزيع مجموعة الموارد باستخدام الملفات Bicep

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

مع نضوج مؤسستك، يمكنك نشر ملف Bicep لإنشاء موارد على مستوى مجموعة الإدارة. على سبيل المثال، قد تحتاج إلى تحديد وتعيين النُهج أو التحكم في الوصول استناداً إلى الدور Azure (Azure RBAC) لمجموعة إدارة. باستخدام قوالب مستوى مجموعة الإدارة، يمكنك تطبيق النهج بشكل إعلاني وتعيين الأدوار على مستوى مجموعة الإدارة.

موارد التدريب

إذا كنت تفضل معرفة نطاقات التوزيع من خلال إرشادات عملية، راجع توزيع الموارد للاشتراكات ومجموعات الإدارة والمستأجرين باستخدام Bicep.

الموارد المدعومة

لا يمكنك نشر جميع أنواع الموارد على مستوى مجموعة الإدارة. يسرد هذا المقطع أنواع الموارد المعتمدة.

بخصوص Azure Blueprints، استخدم:

بالنسبة إلى نهج Azure، استخدم:

للتحكم في الوصول، استخدم:

بالنسبة للقوالب المتداخلة التي يتم نشرها في الاشتراكات أو مجموعات الموارد، استخدم:

بالنسبة لإدارة مواردك، استخدم:

مجموعات الإدارة هي موارد مستوى المستأجر. ومع ذلك، يمكنك إنشاء مجموعات إدارة في نشر مجموعة إدارة عن طريق تعيين نطاق مجموعة الإدارة الجديدة إلى المستأجر. راجع مجموعة الإدارة.

عين نطاق

لتعيين النطاق لمجموعة الإدارة، استخدم:

targetScope = 'managementGroup'

أوامر التوزيع

بالنسبة للنشر إلى مجموعة إدارة، استخدم أوامر نشر مجموعة الإدارة.

بالنسبة إلى Azure CLI، استخدم az deployment mg create:

az deployment mg create \
  --name demoMGDeployment \
  --location WestUS \
  --management-group-id myMG \
  --template-uri "https://raw.githubusercontent.com/Azure/azure-docs-json-samples/master/management-level-deployment/azuredeploy.json"

للحصول على مزيد من المعلومات التفصيلية حول أوامر النشر وخيارات نشر قوالب ARM، راجع:

موقع التوزيع والاسم

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

يمكنك توفير اسم لعملية التوزيع، أو استخدام اسم التوزيع الافتراضي. يكون الاسم الافتراضي هو اسم ملف القالب. على سبيل المثال، يؤدي نشر قالب يسمى main.bicep إلى إنشاء اسم نشر افتراضي للقالب الرئيسي.

يكون الموقع غير قابل للتغيير لكل اسم عملية توزيع. ولا يمكنك إنشاء عملية توزيع في أحد المواقع عندما يكون هناك توزيع موجود بنفس الاسم في موقع آخر. على سبيل المثال، إذا أنشأت نشر مجموعة إدارة بالاسم publish1 في centralus ، فلا يمكنك لاحقاً إنشاء عملية نشر أخرى باسم publish1 ولكن موقع من westus . إذا تلقيت رمز الخطأ InvalidDeploymentLocation، فاستخدم اسمًا مختلفًا أو نفس موقع التوزيع السابق لذلك الاسم.

نطاقات التوزيع

عند النشر إلى مجموعة موارد، يمكنك نشر الموارد إلى:

  • مجموعة الإدارة المستهدفة من هذه العملية
  • مجموعة الإدارة الأخرى في المستأجر
  • اشتراكات في مجموعة الإدارة
  • مجموعات الموارد داخل مجموعة الإدارة
  • مستأجر مجموعة الموارد

يمكن تحديد نطاق مورد ملحق لهدف مختلف عن هدف النشر.

يجب أن يكون لدى المستخدم الذي يقوم بتوزيع القالب حق الوصول إلى النطاق المحدد.

النطاق إلى مجموعة الإدارة

لنشر الموارد إلى مجموعة الإدارة الهدف، أضف هذه الموارد باستخدام resource الكلمة الأساسية .

targetScope = 'managementGroup'

// policy definition created in the management group
resource policyDefinition 'Microsoft.Authorization/policyDefinitions@2023-04-01' = {
  ...
}

لاستهداف مجموعة إدارة أخرى، أضف وحدة نمطية. استخدم الدالة managementGroup لتعيين خاصية scope. أدخل اسم مجموعة الإدارة.

targetScope = 'managementGroup'

param otherManagementGroupName string

// module deployed at management group level but in a different management group
module exampleModule 'module.bicep' = {
  name: 'deployToDifferentMG'
  scope: managementGroup(otherManagementGroupName)
}

نطاق للاشتراك

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

لاستهداف اشتراك داخل مجموعة الإدارة، أضف الوحدة النمطية. استخدم الدالة subscription لتعيين الخاصية scope. وقم بتوفير معرف الاشتراك.

targetScope = 'managementGroup'

param subscriptionID string

// module deployed to subscription in the management group
module exampleModule 'module.bicep' = {
  name: 'deployToSub'
  scope: subscription(subscriptionID)
}

نطاق لمجموعة الموارد

يمكنك أيضاً استهداف مجموعات الموارد من خلال مجموعة الإدارة. يجب أن يكون لدى المستخدم الذي يقوم بتوزيع القالب حق الوصول إلى النطاق المحدد.

لاستهداف مجموعة موارد داخل مجموعة الإدارة، أضف وحدة نمطية. استخدم الدالة resourceGroup لتعيين الخاصية scope. ادخل معرف الاشتراك، واسم مجموعة الموارد.

targetScope = 'managementGroup'

param subscriptionID string
param resourceGroupName string

// module deployed to resource group in the management group
module exampleModule 'module.bicep' = {
  name: 'deployToRG'
  scope: resourceGroup(subscriptionID, resourceGroupName)
}

نطاق للمستأجر

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

targetScope = 'managementGroup'

// module deployed at tenant level
module exampleModule 'module.bicep' = {
  name: 'deployToTenant'
  scope: tenant()
}

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

مجموعة الإدارة

لإنشاء مجموعة إدارة في توزيع مجموعة إدارة، يجب عليك تعيين النطاق إلى المستأجر.

ينشئ المثال التالي مجموعة الإدارة الجديدة في مجموعة إدارة الجذر.

targetScope = 'managementGroup'

param mgName string = 'mg-${uniqueString(newGuid())}'

resource newMG 'Microsoft.Management/managementGroups@2023-04-01' = {
  scope: tenant()
  name: mgName
  properties: {}
}

output newManagementGroup string = mgName

ينشئ المثال التالي مجموعة إدارة جديدة في مجموعة الإدارة المستهدفة للتوزيع. يستخدم دالة مجموعة الإدارة.

targetScope = 'managementGroup'

param mgName string = 'mg-${uniqueString(newGuid())}'

resource newMG 'Microsoft.Management/managementGroups@2023-04-01' = {
  scope: tenant()
  name: mgName
  properties: {
    details: {
      parent: {
        id: managementGroup().id
      }
    }
  }
}

output newManagementGroup string = mgName

الاشتراكات

لاستخدام قالب ARM لإنشاء اشتراك Azure جديد في مجموعة الإدارة، راجع:

لنشر قالب ينقل اشتراك Azure الحالي إلى مجموعة إدارة جديدة، راجع نقل الاشتراكات في قالب ARM

نهج Azure

تعد تعريفات النهج المخصصة التي يتم نشرها في مجموعة الإدارة امتدادات لمجموعة الإدارة. للحصول على معرف تعريف نهج مخصص، استخدم الدالة extensionResourceId(). تعريفات النهج المضمنة هي موارد على مستوى المستأجر. للحصول على معرف تعريف نهج مضمن، استخدم الدالة tenantResourceId () .

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

targetScope = 'managementGroup'

@description('An array of the allowed locations, all other locations will be denied by the created policy.')
param allowedLocations array = [
  'australiaeast'
  'australiasoutheast'
  'australiacentral'
]

resource policyDefinition 'Microsoft.Authorization/policyDefinitions@2023-04-01' = {
  name: 'locationRestriction'
  properties: {
    policyType: 'Custom'
    mode: 'All'
    parameters: {}
    policyRule: {
      if: {
        not: {
          field: 'location'
          in: allowedLocations
        }
      }
      then: {
        effect: 'deny'
      }
    }
  }
}

resource policyAssignment 'Microsoft.Authorization/policyAssignments@2024-04-01' = {
  name: 'locationAssignment'
  properties: {
    policyDefinitionId: policyDefinition.id
  }
}

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

للتعرف على النطاقات الأخرى، راجع: