القوالب المتداخلة في بيئات مختبرات DevTest

تتكون بيئة Azure DevTest Labs من عدة آلات افتراضية للبنية التحتية كخدمة (IaaS) مع موارد منصة كخدمة (PaaS) مثبتة. يمكنك توفير ونشر بيئات مختبرات DevTest باستخدام قوالب Azure Resource Manager (ARM).

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

للحصول على معلومات عامة حول القوالب المتداخلة، بما في ذلك عينات الكود، راجع استخدام القوالب المرتبطة والمتداخلة عند نشر موارد Azure.

نشر القوالب المتداخلة

في مختبرات DevTest، يمكنك تخزين قوالب ARM في مستودع Git مرتبط بمختبر. عند استخدام قوالب المستودع لإنشاء البيئة، يقوم DevTest Labs بنسخ جميع ملفات القوالب وملفات القطع الأثرية، بما في ذلك ملفات القوالب المتداخلة، إلى حاوية تخزين Azure الخاصة بالمختبر.

يستخدم ملف القالب الرئيسيazuredeploy.json لنشر Microsoft.Resources/deployments القوالب المتداخلة كائنات لاستدعاء القوالب الثانوية المرتبطة. تقوم بتوفير قيم URI للقوالب المرتبطة، وإنشاء رمز توقيع الوصول المشترك (SaS) للنشر.

يستخدم النشر Azure PowerShell New-AzResourceGroupDeployment أو Azure CLI az deployment group create، ويحدد القالب الرئيسي URI ورمز SaS. لمزيد من المعلومات، راجع الدليل التعليمي: نشر قالب مرتبط.

مثال على قالب متداخل

المثال التالي azuredeploy.json ملف القالب الرئيسي يوضح الكود الخاص بنشر متداخل. يحدد ملف القالب الرئيسي الروابط إلى القالب المتداخل.

رابط URI للقالب الثانوي يربط موقع القطع الأثرية، مجلد القالب المتداخل، اسم ملف القالب المتداخل، وموقع رمز توقيع الوصول المشترك (SaS) للعناصر الأثرية. يستخدم URI الخاص بملف المعاملات الثانوية موقع القطع الأطرافية، مجلد القالب المتداخل، اسم ملف المعلمات المتداخلة، وموقع رمز SaS للمصنوعات الأثرية.


"$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": {}