قم بتوزيع بيئات DevTest Labs باستخدام القوالب المتداخلة

يعمل التوزيع المتداخل على تشغيل قوالب Azure Resource Manager (ARM) الثانوية من داخل قالب رئيسي. تعرض هذه المقالة مثالاً على القوالب المتداخلة لتوزيع بيئة Azure DevTest Labs. تحتوي بيئات DevTest Labs على العديد من الأجهزة الظاهرية (VM) للبنية الأساسية كخدمة (IaaS) مع تثبيت موارد النظام الأساسي كخدمة (PaaS). يمكنك توفير موارد PaaS والأجهزة الافتراضية باستخدام قوالب ARM.

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

إشعار

يوصى بشدة ببيئات نشر Azure (ADE) لإنشاء بيئات. تمكن ADE المطورين من نشر البنية الأساسية للتطبيقات بسرعة باستخدام القوالب المستندة إلى المشروع، ما يضمن بيئات متسقة وآمنة لفرق التطوير الخاصة بك.

لمعرفة المزيد حول Azure Deployment Environments، راجع وثائق Azure Deployment Environments.

قم بتوزيع القوالب المتداخلة باستخدام Visual Studio

يسهل قالب مشروع Azure Resource Group في Visual Studio تطوير قوالب ARM وتصحيحها. عند إضافة قالب متداخل إلى ملف القالب الرئيسي azuredeploy.json، يضيف Visual Studio العناصر التالية لجعل القالب أكثر مرونة:

  • مجلد فرعي مع القالب الثانوي وملفات المعلمات
  • أسماء المتغيرات في ملف القالب الرئيسي
  • معلمتان رئيسيتان، _artifactsLocation و_artifactsLocationSasToken

في DevTest Labs، تقوم بتخزين قوالب ARM في مستودع Git الذي تربطه بالمعمل. عند استخدام أحد قوالب المستودعات المرتبطة لإنشاء بيئة جديدة، ينسخ التوزيع ملفات القوالب في حاوية Azure Storage في المعمل. عند إضافة مورد قالب متداخل إلى المستودع وملف القالب الرئيسي، يحدد Visual Studio القيمتين _artifactsLocation و_artifactsLocationSasToken، وينسخ المجلدات الفرعية إلى حاوية التخزين، ويدرج الموقع وتوقيع الوصول المشترك (SaS) في الرمز المميز ملفات المعلمات.

بنية مجلد القالب المتداخلة

في مثال القالب التالي، يحتوي مجلد مستودع Git على مجلد فرعي، يسمى nestedtemplates، مع ملفات القوالب المتداخلة NestOne.json وNestOne.parameters.json. يبني ملف القالب الرئيسي azuredeploy.json URI للقوالب الثانوية باستخدام موقع البيانات الاصطناعية ومجلد القالب المتداخل واسم ملف القالب المتداخل. عنوان URI لملف المعلمات هو موقع البيانات الاصطناعية ومجلد القالب المتداخل وملف معلمات القالب المتداخلة. يمكنك إضافة المزيد من المجلدات الفرعية للقوالب المتداخلة إلى المجلد الأساسي، ولكن على مستوى واحد فقط من التداخل.

تُظهر لقطة الشاشة التالية بنية المشروع في Visual Studio:

لقطة شاشة تعرض بنية مشروع القالب المتداخلة في Visual Studio.

مثال على التوزيع المتداخل

يوضح المثال التالي ملف قالب ARM الرئيسي azuredeploy.json للتوزيع المتداخل:


"$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"parameters": {
    "_artifactsLocation": {
        "type": "string"
    },
    "_artifactsLocationSasToken": {
        "type": "securestring"
    }},
"variables": {
    "NestOneTemplateFolder": "nestedtemplates",
    "NestOneTemplateFileName": "NestOne.json",
    "NestOneTemplateParametersFileName": "NestOne.parameters.json"},
    "resources": [
    {
        "name": "NestOne",
        "type": "Microsoft.Resources/deployments",
        "apiVersion": "2016-09-01",
        "dependsOn": [ ],
        "properties": {
            "mode": "Incremental",
            "templateLink": {
                "uri": "[concat(parameters('_artifactsLocation'), '/', variables('NestOneTemplateFolder'), '/', variables('NestOneTemplateFileName'), parameters('_artifactsLocationSasToken'))]",
                "contentVersion": "1.0.0.0"
            },
            "parametersLink": {
                "uri": "[concat(parameters('_artifactsLocation'), '/', variables('NestOneTemplateFolder'), '/', variables('NestOneTemplateParametersFileName'), parameters('_artifactsLocationSasToken'))]",
                "contentVersion": "1.0.0.0"
            }
        }    
    }],
"outputs": {}

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