إنشاء بيئات Azure DevTest Labs من قوالب ARM

في هذه المقالة، ستتعلم كيفية إنشاء بيئات Azure DevTest Labs من قوالب Azure Resource Manager (ARM ). يمكنك استخدام بيئات DevTest Labs لتوفير مختبرات بسهولة ومتناسقة مع أجهزة ظاهرية متعددة (VMs) أو موارد النظام الأساسي كخدمة (PaaS). يمكنك استخدام هذا الأسلوب لإنشاء معمل لتطبيق ويب متعدد المستويات أو مزرعة SharePoint.

تشترك الموارد في بيئة DevTest Labs في نفس دورة الحياة ويمكنك إدارتها معا. يمكنك تتبع تكلفة بيئات المختبر وموارد PaaS بنفس الطريقة التي تتبع بها تكاليف الأجهزة الظاهرية للمختبر الفردي.

يمكنك تكوين Azure DevTest Labs لاستخدام قوالب ARM من مستودع GitHub عام أو خاص. يوضح الرسم التخطيطي التالي كيفية إنشاء بيئة باستخدام مختبرات DevTest من قالب ARM في مستودع قالب عام أو مخصص. يصف قسم مستودعات القوالب للمختبرات هذه العملية بالتفصيل.

رسم تخطيطي يوضح كيفية إنشاء بيئة باستخدام مختبرات DevTest باستخدام قالب ARM في مستودع قالب.

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

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

القيود

هناك بعض القيود التي يجب وضعها في الاعتبار عند إنشاء مختبرات من قوالب ARM في مختبرات DevTest:

  • لا تدعم مختبرات DevTest ميزة إيقاف التشغيل التلقائي للجهاز الظاهري (VM) لموارد PaaS التي تم إنشاؤها من قوالب ARM.

  • لا يقوم DevTest Labs بتقييم جميع نهج المختبر عند نشر قوالب ARM. لا يتم تقييم النهج التالية:

    • عدد الأجهزة الظاهرية لكل مستخدم مختبر
    • عدد الأجهزة الظاهرية المتميزة لكل مستخدم
    • عدد المكاتب المتميزة لكل مستخدم

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

إنشاء بيئات من القوالب

يمكنك إنشاء بيئة من مستودع القالب العام ل Azure DevTest Labs أو يمكنك إضافة مستودع قالب خاص إلى مختبرك.

إنشاء بيئة من قالب باتباع الخطوات التالية:

  1. في مدخل Microsoft Azure، انتقل إلى مورد مختبر DevTest Labs.

  2. في صفحة نظرة عامة على المختبر، قم بتوسيع قسم مختبري في القائمة اليسرى، وحدد بيئاتي.

  3. في صفحة بيئاتي ، حدد إضافة على شريط الأدوات.

  4. في الصفحة Choose a base ، حدد قالب بيئة ARM لاستخدامه:

    لقطة شاشة تعرض قوالب ARM للبيئة العامة المتوفرة لمورد مختبرات DevTest.

  5. في جزء Add ، أدخل Environment name، وقم بتكوين إعدادات المعلمة الأخرى.

    نوع المعلمات وعددها فريد لكل قالب ARM. تشير العلامة النجمية الحمراء (*) إلى إعداد مطلوب. يجب إدخال قيم لكافة الإعدادات المطلوبة.

    تنتج بعض قيم المعلمات في ملف قالب ARM (azuredeploy.parameters.json) حقول إعداد فارغة في جزء إضافة (لا توجد قيمة افتراضية). تتضمن GEN-UNIQUEقيم المعلمات هذه و GEN-SSH-PUB-KEYGEN-UNIQUE-[N]و و.GEN-PASSWORD

    لقطة شاشة تعرض جزء إضافة مع إعدادات لتكوين بيئة SharePoint.

    بالنسبة لمعلمات السلسلة الآمنة مثل كلمات المرور، يمكنك استخدام البيانات السرية من Azure Key Vault. لمعرفة كيفية تخزين الأسرار في مخزن مفاتيح واستخدامها عند إنشاء موارد المختبر، راجع تخزين البيانات السرية في Azure Key Vault.

  6. حدد إضافة لإنشاء البيئة. تبدأ البيئة في التوفير على الفور.

    إشعار

    قد تستغرق عملية توفير بيئة وقتا طويلا. يعتمد إجمالي الوقت على عدد مثيلات الخدمة والأجهزة الظاهرية والموارد الأخرى التي ينشئها DevTest Labs كجزء من بيئة المختبر.

  7. لمراقبة حالة التوفير، ارجع إلى صفحة بيئاتي للمختبر:

    لقطة شاشة توضح كيفية رؤية حالة التوفير لبيئة المختبر.

    أثناء توفير الخدمة قيد التقدم، تكون حالة البيئة هي إنشاء. بعد اكتمال التوفير، تتغير الحالة إلى Ready. يمكنك تحديد تحديث على شريط الأدوات لتحديث طريقة عرض الصفحة والتحقق من الحالة الحالية.

  8. عندما تكون البيئة جاهزة، يمكنك توسيع البيئة في قائمة بيئاتي لمشاهدة الأجهزة الظاهرية التي تم توفيرها بواسطة القالب:

    لقطة شاشة تعرض قائمة الأجهزة الظاهرية التي تم إنشاؤها للبيئة التي تم توفيرها حديثا.

  9. ينشئ النشر مجموعة موارد جديدة لتوفير جميع موارد البيئة المحددة بواسطة قالب ARM. حدد اسم البيئة في قائمة بيئاتي لعرض مجموعة الموارد وجميع الموارد التي تم إنشاؤها بواسطة القالب:

    لقطة شاشة تعرض مجموعة الموارد مع جميع موارد البيئة، بما في ذلك الأجهزة الظاهرية والأقراص والشبكة الظاهرية والمزيد.

  10. حدد بيئة VM في القائمة لمشاهدة الإجراءات المتوفرة للجهاز الظاهري، مثل إدارة التكوين والجدول الزمني والنهج:

    لقطة شاشة تعرض الإجراءات المتوفرة للجهاز الظاهري للبيئة المحددة.

استكشاف مستودعات القوالب

تتوفر قوالب ARM لإنشاء بيئات في مختبرات DevTest من مصدرين:

  • يحتوي DevTest Labs على مستودع قالب ARM عام يتضمن قوالب بيئة تم مصادقة مسبقة ل Azure Web Apps، كتلة Azure Service Fabric، وتطوير مزارع SharePoint. تحتوي القوالب على الحد الأدنى من معلمات الإدخال لتجربة سلسة للبدء مع موارد PaaS. يمكنك استخدام قوالب البيئة العامة كما هي أو تخصيصها لتناسب احتياجاتك. يمكنك أيضا اقتراح مراجعات أو إضافات إلى قالب عام عن طريق إرسال طلب سحب مقابل مستودع القالب العام GitHub.

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

تكوين إعدادات البيئة العامة

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

تعيين الوصول إلى البيئة العامة لمختبر جديد

تكوين الوصول إلى مستودع البيئة العامة لمختبر جديد باتباع الخطوات التالية:

  1. أثناء عملية إنشاء مورد مختبرات DevTest، حدد علامة التبويب الإعدادات الأساسية.

  2. تعيين خيار البيئات العامة إلى تشغيل:

    لقطة شاشة توضح كيفية تمكين مستودعات البيئة العامة لمختبر أثناء عملية إنشاء المختبر.

تعيين الوصول إلى البيئة العامة للمختبرات الحالية

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

اتبع هذه الخطوات لتمكين الوصول إلى مستودع البيئة العامة أو تعطيله لأي مختبر موجود:

  1. في مدخل Microsoft Azure، انتقل إلى مورد مختبر DevTest Labs حيث تريد تعيين الوصول إلى البيئة العامة.

  2. في صفحة نظرة عامة على المختبر، قم بتوسيع قسم Settings في القائمة اليسرى، وحدد Configuration and policies.

  3. في صفحة التكوين والنهج ، قم بتوسيع قسم Virtual machine bases في القائمة اليسرى، وحدد Public environments.

  4. في صفحة البيئات العامة، قم بتعيين الخيار تمكين البيئات العامة لهذا المختبر إلى نعم:

    لقطة شاشة توضح كيفية تمكين جميع مستودعات البيئة العامة لمورد مختبر موجود.

  5. حدد حفظ.

تحديد قوالب البيئة العامة المتوفرة

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

اتبع هذه الخطوات للسماح بالوصول إلى بيئات محددة فقط للمختبر:

  1. في صفحة البيئات العامة، قم بتعيين الخيار تمكين البيئات العامة لهذا المختبر إلى نعم.

  2. قم بإلغاء تحديد بيئات معينة في القائمة لجعلها غير متوفرة لمستخدمي المختبر:

    لقطة شاشة توضح كيفية إلغاء تحديد مستودعات البيئة العامة لمختبر لتعطيل الوصول للمستخدمين.

  3. حدد حفظ.

تكوين حقوق مستخدم البيئة

بشكل افتراضي، يتم تعيين دور القارئ لمستخدمي المختبر في مستودعات البيئة العامة. لا يمكنهم تغيير موارد البيئة، ولا يمكنهم إيقاف الموارد أو بدء تشغيلها.

استخدم الخطوات التالية لمنح مستخدمي المختبر دور المساهم والسماح لهم بتحرير موارد البيئة:

  1. في مدخل Microsoft Azure، انتقل إلى مورد مختبر DevTest Labs حيث تريد ضبط تعيينات دور المستخدم.

  2. في صفحة نظرة عامة على المختبر، قم بتوسيع قسم Settings في القائمة اليسرى، وحدد Configuration and policies.

  3. في صفحة Configuration and policies ، قم بتوسيع قسم Settings في القائمة اليسرى، وحدد Lab settings.

  4. في صفحة إعدادات المختبر، قم بتعيين خيار حقوق مستخدم مجموعة موارد الوصول إلى>البيئة إلى المساهم:

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

  5. حدد حفظ.

أتمتة إنشاء البيئة

إذا كنت بحاجة إلى إنشاء بيئات متعددة لسيناريوهات التطوير أو الاختبار، يمكنك أتمتة نشر البيئة باستخدام Azure PowerShell أو Azure CLI.

يمكن لمالكي المختبر والمسؤولين استخدام Azure PowerShell لإنشاء الأجهزة الظاهرية والبيئات من قوالب ARM. يمكنك أيضا أتمتة النشر من خلال Azure CLI باستخدام الأمر az deployment group create لإنشاء بيئات. لمزيد من المعلومات، راجع نشر الموارد باستخدام قوالب ARM وAzure CLI.

إشعار

نوصي باستخدام الوحدة النمطية Azure Az PowerShell للتفاعل مع Azure. للبدء، راجع تثبيت Azure PowerShell. لمعرفة كيفية الترحيل إلى الوحدة النمطية Az PowerShell، راجع ترحيل Azure PowerShell من AzureRM إلى Az.

أتمتة نشر قالب بيئة ARM باستخدام Azure PowerShell باستخدام الخطوات التالية:

  1. تخزين قالب بيئة ARM في مستودع GitHub.

  2. أضف مستودع قالب GitHub ARM إلى مختبرك.

  3. احفظ البرنامج النصي PowerShell التالي إلى الكمبيوتر الخاص بك باستخدام اسم الملف deployenv.ps1. يستدعي هذا البرنامج النصي قالب ARM لإنشاء البيئة في المختبر.

    #Requires -Module Az.Resources
    
    [CmdletBinding()]
    
    param (
    # ID of the Azure subscription for the lab
    [string] [Parameter(Mandatory=$true)] $SubscriptionId,
    
    # Name of the lab in which to create the environment
    [string] [Parameter(Mandatory=$true)] $LabName,
    
    # Name of the template repository connected to the lab
    [string] [Parameter(Mandatory=$true)] $RepositoryName,
    
    # Name of the template (folder name in the GitHub repository)
    [string] [Parameter(Mandatory=$true)] $TemplateName,
    
    # Name of the environment to create in the lab
    [string] [Parameter(Mandatory=$true)] $EnvironmentName,
    
    # The parameters to pass to the template. Each parameter is prefixed with "-param_".
    # For example, if the template has a parameter named "TestVMName" with a value of "MyVMName",
    # the string in $Params is "-param_TestVMName MyVMName".
    # This convention allows the script to dynamically handle different templates.
    [Parameter(ValueFromRemainingArguments=$true)]
        $Params
    )
    
    # Sign in to Azure, or comment out this statement to completely automate environment creation.
    Connect-AzAccount
    
    # Select the subscription for your lab.  
    Set-AzContext -SubscriptionId $SubscriptionId | Out-Null
    
    # Get the user ID to use later in the script.
    $UserId = $((Get-AzADUser -UserPrincipalName ((Get-AzContext).Account).Id).Id)
    
    # Get the lab location.
    $lab = Get-AzResource -ResourceType "Microsoft.DevTestLab/labs" -Name $LabName
    if ($lab -eq $null) { throw "Unable to find lab $LabName in subscription $SubscriptionId." }
    
    # Get information about the repository connected to your lab.
    $repository = Get-AzResource -ResourceGroupName $lab.ResourceGroupName `
        -ResourceType 'Microsoft.DevTestLab/labs/artifactsources' `
        -ResourceName $LabName `
        -ApiVersion 2016-05-15 `
        | Where-Object { $RepositoryName -in ($_.Name, $_.Properties.displayName) } `
        | Select-Object -First 1
    if ($repository -eq $null) { throw "Unable to find repository $RepositoryName in lab $LabName." }
    
    # Get information about the ARM template base for the environment.
    $template = Get-AzResource -ResourceGroupName $lab.ResourceGroupName `
        -ResourceType "Microsoft.DevTestLab/labs/artifactSources/armTemplates" `
        -ResourceName "$LabName/$($repository.Name)" `
        -ApiVersion 2016-05-15 `
        | Where-Object { $TemplateName -in ($_.Name, $_.Properties.displayName) } `
        | Select-Object -First 1
    if ($template -eq $null) { throw "Unable to find template $TemplateName in lab $LabName." }
    
    # Build the template parameters by using parameter names and values.
    $parameters = Get-Member -InputObject $template.Properties.contents.parameters -MemberType NoteProperty | Select-Object -ExpandProperty Name
    $templateParameters = @()
    
    # Extract the custom parameters from $Params and format them as name/value pairs.
    $Params | ForEach-Object {
        if ($_ -match '^-param_(.*)' -and $Matches[1] -in $parameters) {
            $name = $Matches[1]                
        } elseif ( $name ) {
            $templateParameters += @{ "name" = "$name"; "value" = "$_" }
            $name = $null #reset name variable
        }
    }
    
    # Create an object to hold the necessary template properties.
    $templateProperties = @{ "deploymentProperties" = @{ "armTemplateId" = "$($template.ResourceId)"; "parameters" = $templateParameters }; }
    
    # Deploy the environment in your lab by using the New-AzResource command.
    New-AzResource -Location $Lab.Location `
        -ResourceGroupName $lab.ResourceGroupName `
        -Properties $templateProperties `
        -ResourceType 'Microsoft.DevTestLab/labs/users/environments' `
        -ResourceName "$LabName/$UserId/$EnvironmentName" `
        -ApiVersion '2016-05-15' -Force
    
    Write-Output "Environment $EnvironmentName completed."
    
  4. قم بتحديث العناصر النائبة التالية في البرنامج النصي بقيم المختبر الخاصة بك:

    • SubscriptionId
    • LabName
    • ResourceGroupName
    • RepositoryName
    • TemplateName (مجلد القالب في مستودع GitHub)
    • EnvironmentName

    توضح القصاصة البرمجية التالية كيفية تشغيل البرنامج النصي مع قيم معلمات المثال:

    ./deployenv.ps1 -SubscriptionId "000000000-0000-0000-0000-0000000000000" -LabName "mydevtestlab" -ResourceGroupName "mydevtestlabRG000000" -RepositoryName "myRepository" -TemplateName "ARM template folder name" -EnvironmentName "myNewEnvironment"
    
  5. قم بتشغيل البرنامج النصي