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

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

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

يمكنك تكوين Azure DevTest Labs لاستخدام قوالب ARM من مستودع Git عام أو خاص. تعرف على المزيد حول مستودعات القوالب للمختبرات.

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

إذا كنت ترغب في استخدام قالب ARM لإنشاء مورد Azure DevTest Labs، فشاهد التشغيل السريع: استخدام قالب ARM لإنشاء معمل في DevTest Labs.

التقييدات

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

  • لا ينطبق إيقاف التشغيل التلقائي للجهاز الظاهري على موارد PaaS.

  • لا يتم تقييم جميع نهج المختبر عند توزيع قوالب ARM. تتضمن النهج التي لم يتم تقييمها ما يلي: عدد الأجهزة الظاهرية لكل مستخدم مختبر، وعدد الأجهزة الظاهرية المتميزة لكل مستخدم، وعدد المكاتب المتميزة لكل مستخدم. على سبيل المثال، قد يقتصر نهج المختبر على خمسة أجهزة ظاهرية فقط لكل منهما. ومع ذلك، يمكن للمستخدم نشر قالب بيئة ARM الذي ينشئ عشرات الأجهزة الظاهرية.

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

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

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

لإنشاء بيئة من قالب:

  1. في مدخل Microsoft Azure، حدد مورد المختبر الخاص بك.

  2. في صفحة نظرة عامة على المختبر، حدد إضافة من شريط الأدوات العلوي.

  3. في الصفحة Choose a base، حدد قالب بيئة ARM لاستخدامه. تظهر قوالب البيئة المتوفرة أولاً في قائمة القواعد.

    لقطة شاشة تعرض قوالب البيئة العامة.

  4. على الشاشة إضافة ، أدخل اسم البيئة، واملأ حقول الإدخال الأخرى.

    يتم تعريف عدد ونوع حقول الإدخال في قالب ARM. عند الضرورة، أدخل قيم حقول الإدخال التي يعرفها ملف القالب azuredeploy.parameters.json على أنها فارغة أو افتراضية.

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

    • في ملفات قالب ARM، GEN-UNIQUEGEN-UNIQUE-[N]GEN-SSH-PUB-KEYتقوم قيم المعلمات و GEN-PASSWORD بإنشاء حقول إدخال فارغة للمستخدمين لإدخال قيم.

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

  5. حدد إضافة لإنشاء البيئة.

    تبدأ البيئة في التوفير على الفور. يمكنك مشاهدة حالة التوفير ضمن بيئاتي في صفحة نظرة عامة على المختبر. قد يستغرق توفير بيئة وقتًا طويلاً.

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

    لقطة شاشة تعرض قائمة الأجهزة الظاهرية ضمن بيئة.

    ينشئ التوزيع مجموعة موارد جديدة لتوفير جميع موارد البيئة التي حددها قالب ARM. حدد اسم البيئة ضمن بيئاتي لعرض مجموعة الموارد وجميع الموارد التي أنشأها القالب.

    لقطة شاشة تعرض مجموعة الموارد مع جميع موارد البيئة.

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

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

مستودعات قوالب البيئة

باستخدام Azure DevTest Labs، يمكنك إنشاء بيئات من قوالب ARM. يمكن أن تأتي قوالب ARM من مصدرين:

تلميح

لاقتراح مراجعات أو إضافات إلى القوالب العامة، أرسل طلب سحب مقابل مستودع قالب GitHub العام مفتوح المصدر.

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

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

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

تمكين البيئات العامة عند إنشاء مختبر

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

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

  2. حدد تشغيل في حقل البيئات العامة .

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

تمكين أو تعطيل البيئات العامة للمختبرات الموجودة

بالنسبة للمختبرات الموجودة أو المختبرات التي تقوم بإنشائها باستخدام قالب ARM، قد لا يتم تمكين البيئات العامة. لتمكين أو تعطيل مستودع البيئة العامة للمختبرات الموجودة:

  1. في مدخل Microsoft Azure، حدد مورد المختبر الخاص بك.

  2. قم بتحديد Configuration and policies في التنقل الأيسر.

  3. حدد البيئات العامة ضمن قواعد الجهاز الظاهري في التنقل الأيسر.

  4. حدد نعم أو لالتمكين البيئات العامة لهذا المختبر، لتمكين البيئات العامة للمختبر أو تعطيلها.

  5. حدد ⁧⁩حفظ⁧⁩.

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

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

  1. في مدخل Microsoft Azure، حدد مورد المختبر الخاص بك.

  2. قم بتحديد Configuration and policies في التنقل الأيسر.

  3. حدد البيئات العامة ضمن قواعد الجهاز الظاهري في التنقل الأيسر.

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

    لقطة شاشة تعرض قائمة البيئات العامة للمختبر.

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

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

  1. في مدخل Microsoft Azure، حدد مورد المختبر الخاص بك.

  2. قم بتحديد Configuration and policies في التنقل الأيسر.

  3. حدد Lab settings في التنقل الأيسر.

  4. ضمن Environment access>Resource group user rights، حدد Contributor، ثم حدد Save.

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

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

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

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

يمكن لمالكي المختبر والمسؤولين استخدام Azure PowerShell لإنشاء الأجهزة الظاهرية والبيئات من قوالب ARM.

ملاحظة

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

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

  1. افحص قالب بيئة ARM في مستودع Git، وأضف المستودع إلى المختبر.

  2. احفظ البرنامج النصي 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 Git repository)
    [string] [Parameter(Mandatory=$true)] $TemplateName,
    
    # Name of the environment to create in the lab
    [string] [Parameter(Mandatory=$true)] $EnvironmentName,
    
    # The parameters to be passed 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 will be "-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 that has the 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 the 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 the 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."
    
  3. قم بتشغيل البرنامج النصي، باستخدام القيم الخاصة بك لاستبدال قيم المثال لـ:

    • SubscriptionId
    • LabName
    • ResourceGroupName
    • RepositoryName
    • TemplateName (مجلد القالب في مستودع Git)
    • EnvironmentName
    ./deployenv.ps1 -SubscriptionId "000000000-0000-0000-0000-0000000000000" -LabName "mydevtestlab" -ResourceGroupName "mydevtestlabRG000000" -RepositoryName "myRepository" -TemplateName "ARM template folder name" -EnvironmentName "myNewEnvironment"
    

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