إنشاء مخططات ديناميكية من خلال المعلمات

هام

في 11 يوليو 2026، سيتم إهمال المخططات (إصدار أولي). قم بترحيل تعريفات المخططات والتعيينات الموجودة إلى مواصفات القالبومكدسات التوزيع. سيتم تحويل البيانات الاصطناعية للمخطط إلى قوالب ARM JSON أو ملفات Bicep المستخدمة لتعريف مكدسات التوزيع. لمعرفة كيفية تأليف أداة كمورد ARM، راجع:

مخطط معرف بالكامل مع العديد من عناصر البيانات الاصطناعية مثل مجموعات الموارد أو قوالب Azure Resource Manager (قوالب ARM) أو السياسات أو تعيينات الأدوار، يوفر الإنشاء السريع والإنشاء المتسق للكائنات داخل Azure. لتمكين الاستخدام المرن لأنماط التصميم والحاويات القابلة لإعادة الاستخدام هذه، تدعم Azure Blueprints المعلمات. تخلق المعلمة المرونة، أثناء التعريف والتعيين، لتغيير الخصائص على البيانات الاصطناعية التي تم توزيعها بواسطة المخطط.

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

ملاحظة

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

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

معلمات المخطط

من خلال REST API، يمكن إنشاء المعلمات على المخطط نفسه. تختلف هذه المعلمات عن المعلمات الموجودة في كل من البيانات الاصطناعية المدعومة. عندما يتم إنشاء معلمة في المخطط، يمكن استخدامها بواسطة البيانات الاصطناعية في هذا المخطط. مثال قد يكون البادئة لتسمية مجموعة الموارد. يمكن أن تستخدم الأداة معلمة المخطط لإنشاء معامل "ديناميكي في الغالب". نظراً لأنه يمكن أيضاً تحديد المعلمة أثناء التعيين، فإن هذا النمط يسمح بالاتساق الذي قد يلتزم بقواعد التسمية. لمعرفة الخطوات، راجع تعيين المعلمات الثابتة - معلمة مستوى المخطط.

استخدام معلمات secureString وsecureObject

بينما يدعم قالب ARM معلمات النوعين secureString وsecureObject، تتطلب Azure Blueprints أن يتم توصيل كل منها بـ Azure Key Vault. يمنع هذا الإجراء الأمني ​​الممارسة غير الآمنة لتخزين البيانات السرية جنباً إلى جنب مع المخطط ويشجع على استخدام الأنماط الآمنة. تدعم Azure Blueprints مقياس الأمان هذا، وتكشف عن تضمين أي معلمة آمنة في قالب ARM artifact. تطالب الخدمة بعد ذلك أثناء التعيين بخصائص Key Vault التالية لكل معلمة آمنة تم اكتشافها:

  • معرّف مورد Key Vault
  • الاسم السري لـ Key Vault
  • نسخة سرية من Key Vault

إذا كان تعيين المخطط يستخدم الهوية المُدارة يعينها النظام، فإن Key Vault المشار إليه يجب أن يكون موجوداً في نفس الاشتراك الذي تم تعيين تعريف المخطط له.

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

هام

في كلتا الحالتين، يجب أن يحتوي Key Vault على تمكين الوصول إلى Azure Resource Manager لتوزيع القالب المكون في صفحة Access policies. للحصول على توجيهات حول كيفية تمكين هذه الميزة، راجع Key Vault - تمكين توزيع القالب.

لمزيد من المعلومات حول Azure Key Vault، راجع نظرة عامة على مخزن المفاتيح.

أنواع المعلمات

المعلمات الثابتة

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

ضبط المعلمات الثابتة في المدخل

  1. حدد ⁧⁩All services⁩ في الجزء الأيسر. ابحث عن ⁧⁩Blueprints⁧⁩ وحددها.

  2. حدد "Blueprint definitions" من الصفحة على اليسار.

  3. حدد مخططاً موجوداً ثم حدد Edit blueprint أو حدد + Create blueprint واملأ المعلومات في علامة التبويب Basics.

  4. حدد Next: Artifacts أو حدد علامة التبويب Artifacts.

  5. البيانات الاصطناعية المضافة إلى المخطط الذي يحتوي على خيارات المعلمات تعرض X لمعلمات Y التي تم ملؤها في عمود Parameters. حدد صف الأداة لتحرير معلمات الأداة.

    لقطة شاشة لتعريف المخطط وتم تمييز

  6. تعرض صفحة تحرير العنصر خيارات القيمة المناسبة لعنصر البيانات الاصطناعي المحددة. كل معلمة في الأداة لها عنوان ومربع قيمة ومربع اختيار. اضبط المربع على غير محدد لجعله معلمة ثابتة. في المثال التالي، الموقع فقط هو معلمة ثابتة حيث لم يتم تحديدها وتم تحديد اسم مجموعة الموارد.

    لقطة شاشة للمعلمات الثابتة على عنصر البيانات الاصطناعي للمخطط.

ضبط المعلمات الثابتة من REST API

في كل REST API URI، هناك متغيرات يتم استخدامها تحتاج إلى استبدالها بقيمك الخاصة:

  • {YourMG} - استبدل اسم مجموعة الإدارة الخاصة بك
  • استبدل {subscriptionId} بمعرّف اشتراكك
معلمة مستوى المخطط

عند إنشاء مخطط من خلال REST API، من الممكن إنشاء معلمات مخطط. للقيام بذلك، استخدم REST API URI التالي وتنسيق النص الأساسي:

  • REST API URI

    PUT https://management.azure.com/providers/Microsoft.Management/managementGroups/{YourMG}/providers/Microsoft.Blueprint/blueprints/MyBlueprint?api-version=2018-11-01-preview
    
  • نص الطلب

    {
        "properties": {
            "description": "This blueprint has blueprint level parameters.",
            "targetScope": "subscription",
            "parameters": {
                "owners": {
                    "type": "array",
                    "metadata": {
                        "description": "List of AAD object IDs that is assigned Owner role at the resource group"
                    }
                }
            },
            "resourceGroups": {
                "storageRG": {
                    "description": "Contains the resource template deployment and a role assignment."
                }
            }
        }
    }
    

بمجرد إنشاء معلمة مستوى المخطط، يمكن استخدامها على البيانات الاصطناعية المضافة إلى هذا المخطط. يُنشئ مثال REST API التالي عنصراً مهماً لتعيين الدور في المخطط ويستخدم معلمة مستوى المخطط.

  • REST API URI

    PUT https://management.azure.com/providers/Microsoft.Management/managementGroups/{YourMG}/providers/Microsoft.Blueprint/blueprints/MyBlueprint/artifacts/roleOwner?api-version=2018-11-01-preview
    
  • نص الطلب

    {
        "kind": "roleAssignment",
        "properties": {
            "resourceGroup": "storageRG",
            "roleDefinitionId": "/providers/Microsoft.Authorization/roleDefinitions/8e3af657-a8ff-443c-a75c-2fe8c4bcb635",
            "principalIds": "[parameters('owners')]"
        }
    }
    

في هذا المثال، تستخدم الخاصية principalIds معلمة مستوى المخطط owners باستخدام قيمة [parameters('owners')]. لا يزال تعيين معلمة على عنصر ما باستخدام معلمة مستوى المخطط مثالاً على معلمة ثابتة. لا يمكن تعيين معلمة مستوى المخطط أثناء تعيين المخطط وستكون بنفس القيمة في كل مهمة.

معلمة مستوى الأداة

يتشابه إنشاء معلمات ثابتة على عنصر، ولكنه يأخذ قيمة مباشرة بدلاً من استخدام الوظيفة parameters(). ينشئ المثال التالي معلمتين ثابتتين، tagName وtagValue. يتم توفير القيمة في كل منها مباشرة ولا تستخدم استدعاء دالة.

  • REST API URI

    PUT https://management.azure.com/providers/Microsoft.Management/managementGroups/{YourMG}/providers/Microsoft.Blueprint/blueprints/MyBlueprint/artifacts/policyStorageTags?api-version=2018-11-01-preview
    
  • نص الطلب

    {
        "kind": "policyAssignment",
        "properties": {
            "description": "Apply storage tag and the parameter also used by the template to resource groups",
            "policyDefinitionId": "/providers/Microsoft.Authorization/policyDefinitions/49c88fc8-6fd1-46fd-a676-f12d1d3a4c71",
            "parameters": {
                "tagName": {
                    "value": "StorageType"
                },
                "tagValue": {
                    "value": "Premium_LRS"
                }
            }
        }
    }
    

المعلمات الديناميكية

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

ضبط المعلمات الديناميكية في المدخل

  1. حدد ⁧⁩All services⁩ في الجزء الأيسر. ابحث عن ⁧⁩Blueprints⁧⁩ وحددها.

  2. حدد "Blueprint definitions" من الصفحة على اليسار.

  3. انقر بزر الماوس الأيمن فوق المخطط الذي تريد تعيينه. حدد Assign blueprint أو حدد المخطط الذي تريد تعيينه، ثم استخدم زر Assign blueprint.

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

    لقطة شاشة لإعداد المعلمات الديناميكية أثناء تعيين المخطط.

إعداد المعلمات الديناميكية من REST API

يتم إعداد المعلمات الديناميكية أثناء التعيين عن طريق إدخال القيمة مباشرةً. بدلاً من استخدام دالة، مثل معلمات ()، فإن القيمة المقدمة هي سلسلة مناسبة. يتم تحديد البيانات الاصطناعية لمجموعة الموارد بخصائص "اسم القالب" والاسمو الموقع. يتم تحديد جميع المعلمات الأخرى للعنصر المُضمن ضمن parameters بزوج مفاتيح <اسم> وقيمة. إذا تم تكوين المخطط لمعلمة ديناميكية لم يتم توفيرها أثناء التعيين، فسيفشل التعيين.

  • REST API URI

    PUT https://management.azure.com/subscriptions/{subscriptionId}/providers/Microsoft.Blueprint/blueprintAssignments/assignMyBlueprint?api-version=2018-11-01-preview
    
  • نص الطلب

    {
        "properties": {
            "blueprintId": "/providers/Microsoft.Management/managementGroups/{YourMG}  /providers/Microsoft.Blueprint/blueprints/MyBlueprint",
            "resourceGroups": {
                "storageRG": {
                    "name": "StorageAccount",
                    "location": "eastus2"
                }
            },
            "parameters": {
                "storageAccountType": {
                    "value": "Standard_GRS"
                },
                "tagName": {
                    "value": "CostCenter"
                },
                "tagValue": {
                    "value": "ContosoIT"
                },
                "contributors": {
                    "value": [
                        "7be2f100-3af5-4c15-bcb7-27ee43784a1f",
                        "38833b56-194d-420b-90ce-cff578296714"
                    ]
                  },
                "owners": {
                    "value": [
                        "44254d2b-a0c7-405f-959c-f829ee31c2e7",
                        "316deb5f-7187-4512-9dd4-21e7798b0ef9"
                    ]
                }
            }
        },
        "identity": {
            "type": "systemAssigned"
        },
        "location": "westus"
    }
    

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