إضافة مستودع البيانات الاصطناعية إلى معمل

توضح لك هذه المقالة كيفية إضافة مستودع بيانات اصطناعية إلى معملك في Azure DevTest Labs. البيانات الاصطناعية هي أدوات أو تطبيقات لتثبيتها على الأجهزة الظاهرية (VMs). يمكنك تعريف البيانات الاصطناعية في ملف JSON الذي تقوم بتحميله من مستودع GitHub أو Azure Repos Git.

يوفر مستودع البيانات الاصطناعية GitHub DevTest Labs العام العديد من البيانات الاصطناعية الشائعة Windows وLinux. تتوفر البيانات الاصطناعية في هذا المستودع العام بشكل افتراضي في DevTest Labs. للحصول على معلومات حول إضافة البيانات الاصطناعية إلى الأجهزة الظاهرية، راجع إضافة بيانات اصطناعية إلى أجهزة DevTest Labs الظاهرية.

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

توضح لك هذه المقالة كيفية إضافة مستودع بيانات اصطناعية إلى معملك باستخدام مدخل Microsoft Azure أو قالب Azure Resource Management (ARM) أو Azure PowerShell. يمكنك أيضًا استخدام برنامج نصي Azure PowerShell أو Azure CLI لأتمتة إضافة مستودع البيانات الاصطناعية إلى معمل.

إشعار

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

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

لإضافة مستودع بيانات اصطناعية إلى معمل، تحتاج إلى معرفة عنوان URL للنسخة لـ Git HTTPS ورمز الوصول الشخصي لمستودع GitHub أو Azure Repos الذي يحتوي على ملفات البيانات الاصطناعية.

الحصول على عنوان URL للنسخة ورمز الوصول الشخصي لـ GitHub

  1. في الصفحة الرئيسة لمستودع GitHub الذي يحتوي على البيانات الاصطناعية الخاصة بك، حدد Code، وضمن Clone، انسخ HTTPS URL.
  2. حدد صورة ملف التعريف في الزاوية العلوية اليمنى من GitHub، ثم حدد الإعدادات.
  3. في صفحة ملف التعريف الخاص بك، في القائمة اليسرى، حدد إعدادات المطور، ثم حدد الرموز المميزة للوصول الشخصي.
  4. حدد إنشاء رمز مميز جديد.
  5. في صفحة رمز الوصول الشخصي الجديد، ضمن ملاحظة، أدخل وصفًا اختياريًا للرمز المميز. اقبل كل الإعدادات الافتراضية، ثم حدد إنشاء رمز مميز.
  6. احفظ الرمز المميز الذي تم إنشاؤه.

الحصول على عنوان URL المستنسخ والرمز المميز للوصول الشخصي لـ Azure Repos

  1. في الصفحة الرئيسة للمستودع الذي يحتوي على البيانات الاصطناعية الخاصة بك، حدد Clone. في صفحة Clone Repository، انسخ عنوان URL للنسخ.
  2. في الزاوية العلوية اليمنى من صفحة Azure DevOps، حدد إعدادات المستخدم> رموز الوصول الشخصية.
  3. في صفحة الرموز المميزة للوصول الشخصي، حدد رمز مميز جديد.
  4. املأ معلومات الرمز المميز، وحدد قراءة للنطاقات، ثم حدد إنشاء.
  5. في صفحة Success، تأكد من نسخ الرمز المميز، لأن Azure Repos لا تخزن الرمز المميز أو تعرضه مرة أخرى.

إضافة مستودع بيانات اصطناعية إلى معمل في مدخل Microsoft Azure

  1. في صفحة نظرة عامة للمعمل، حدد Configuration and policies من شريط التنقل الأيسر.

  2. في صفحة التكوين والنهج، حدد المستودعات ضمن الموارد الخارجية في التنقل الأيمن.

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

  3. لإضافة مستودع البيانات الاصطناعية إلى المعمل، حدد Add في شريط القوائم العلوي.

    لقطة الشاشة تعرض شاشة «تكوين المستودعات».

  4. في جزء المستودع، أدخل المعلومات التالية:

    • الاسم: اسم مستودع لاستخدامه في المعمل.
    • عنوان URL لاستنساخ Git: عنوان URL الخاص باستنساخ Git HTTPS من GitHub أو مستودعات Azure.
    • الفرع (اختياري): الفرع الذي يحتوي على تعريفات البيانات الاصطناعية.
    • الرمز المميز للوصول الشخصي: رمز الوصول الشخصي من GitHub أو Azure Repos.
    • مسارات المجلد:المجلد لتعريفات قالب ARM، المرتبط بعنوان URL لاستنساخ Git. تأكد من تضمين الشرطة المائلة الأولية للأمام في مسار المجلد.
  5. حدد حفظ.

    لقطة شاشة تعرض إضافة مستودع البيانات الاصطناعية الجديد إلى معمل.

يظهر المستودع الآن في قائمة المستودعات للمختبر.

إضافة مستودع بيانات اصطناعية باستخدام قالب ARM

قوالب ARM هي ملفات JSON تصف موارد Azure المراد إنشاؤها. لمزيد من المعلومات حول قوالب ARM، راجع فهم بنية وبنية قوالب ARM.

يضيف قالب ARM التالي مستودع بيانات اصطناعية إلى معمل. ينشئ القالب المعمل إذا لم يكن موجودًا بالفعل.

مراجعة قالب ARM

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

  • اسم المعمل
  • اسم العرض لمستودع البيانات الاصطناعية في DevTest Labs. القيمة الافتراضية هي Team Repository.
  • URI لمستودع البيانات الاصطناعية، الذي نسخته سابقًا.
  • فرع المستودع الذي يحتوي على البيانات الاصطناعية. القيمة الافتراضية هي main.
  • اسم المجلد الذي يحتوي على البيانات الاصطناعية. القيمة الافتراضية هي /Artifacts.
  • نوع المستودع. القيم المسموح بها هي VsoGit، لـ Azure Repos، أو GitHub.
  • رمز الوصول الشخصي للمستودع، الذي نسخته سابقًا.
{

    "$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#",
    "contentVersion": "1.0.0.0",
    "parameters": {
        "labName": {
            "type": "string"
        },
        "artifactRepositoryDisplayName": {
            "type": "string",
            "defaultValue": "Team Repository"
        },
        "artifactRepoUri": {
            "type": "string"
        },
        "artifactRepoBranch": {
            "type": "string",
            "defaultValue": "main"
        },
        "artifactRepoFolder": {
            "type": "string",
            "defaultValue": "/Artifacts"
        },
        "artifactRepoType": {
            "type": "string",
            "allowedValues": ["VsoGit", "GitHub"]
        },
        "artifactRepoSecurityToken": {
            "type": "securestring"
        }
    },
    "variables": {
        "artifactRepositoryName": "[concat('Repo-', uniqueString(subscription().subscriptionId))]"
    },
    "resources": [{
            "apiVersion": "2016-05-15",
            "type": "Microsoft.DevTestLab/labs",
            "name": "[parameters('labName')]",
            "location": "[resourceGroup().location]",
            "resources": [
                {
                    "apiVersion": "2016-05-15",
                    "name": "[variables('artifactRepositoryName')]",
                    "type": "artifactSources",
                    "dependsOn": [
                        "[resourceId('Microsoft.DevTestLab/labs', parameters('labName'))]"
                    ],
                    "properties": {
                        "uri": "[parameters('artifactRepoUri')]",
                        "folderPath": "[parameters('artifactRepoFolder')]",
                        "branchRef": "[parameters('artifactRepoBranch')]",
                        "displayName": "[parameters('artifactRepositoryDisplayName')]",
                        "securityToken": "[parameters('artifactRepoSecurityToken')]",
                        "sourceType": "[parameters('artifactRepoType')]",
                        "status": "Enabled"
                    }
                }
            ]
        }
    ]
}

نشر القالب

هناك عدة طرق لنشر قوالب ARM لإنشاء موارد Azure أو تحديثها. للحصول على معلومات وإرشادات، راجع المقالات التالية:

على سبيل المثال، انشر القالب باستخدام Azure PowerShell.

إشعار

أوامر cmdlets التي تنشر القالب خاصة بالسياق، لذا فهي تستخدم المستأجر والاشتراك الحاليين. إذا كنت بحاجة إلى تغيير السياق، فاستخدم Set-AzContext قبل نشر القالب

  1. أنشئ مجموعة موارد باستخدام New-AzResourceGroup. إذا كانت مجموعة الموارد التي تريد استخدامها موجودة بالفعل، فتخطَّ هذه الخطوة.

    New-AzResourceGroup -Name MyLabResourceGroup1 -Location westus
    
  2. إنشاء نشر إلى مجموعة الموارد باستخدام New-AzResourceGroupDeployment. يمكنك إجراء العديد من عمليات توزيع الموارد إلى نفس مجموعة الموارد. إذا كنت تقوم بالنشر عدة مرات إلى نفس مجموعة الموارد، فتأكد من أن كل اسم نشر فريد.

    New-AzResourceGroupDeployment `
        -Name MyLabResourceGroup-Deployment1 `
        -ResourceGroupName MyLabResourceGroup1 `
        -TemplateFile azuredeploy.json `
        -TemplateParameterFile azuredeploy.parameters.json
    

بعد New-AzResourceGroupDeployment التشغيل بنجاح، يظهر الإخراج معلومات مهمة مثل حالة التزويد، والتي يجب أن تكون succeeded، وأي مخرجات للقالب.

إضافة مستودع بيانات اصطناعية باستخدام Azure PowerShell

يضيف نموذج البرنامج النصي PowerShell التالي، New-DevTestLabArtifactRepository.ps1، مستودع بيانات اصطناعية إلى المعمل. يتضمن البرنامج النصي الكامل بعض الرسائل المطولة والتعليقات.


<#

.SYNOPSIS
This script creates a new custom repository and adds it to an existing DevTest Lab.

.PARAMETER LabName
The name of the lab.

.PARAMETER LabResourceGroupName
The name of the resource group that contains the lab.

.PARAMETER ArtifactRepositoryName
Name for the new artifact repository. The script creates a random name for the repository if not specified.

.PARAMETER ArtifactRepositoryDisplayName
Display name for the artifact repository.
This name appears in the list of artifact repositories for a lab.

.PARAMETER RepositoryUri
Uri to the artifact repository.

.PARAMETER RepositoryBranch
Branch that contains the artifact files. Defaults to 'main'.

.PARAMETER FolderPath
Folder that contains the artifact files. Defaults to '/Artifacts'

.PARAMETER PersonalAccessToken
Personal access token for the GitHub or Azure Repos repository.

.PARAMETER SourceType
Whether the artifact repository is a VSOGit (Azure Repos) or GitHub repository.

.EXAMPLE
Set-AzContext -SubscriptionId 11111111-1111-1111-1111-111111111111
.\New-DevTestLabArtifactRepository.ps1 -LabName "mydevtestlab" -LabResourceGroupName "mydtlrg" -ArtifactRepositoryName "MyTeam Repository" -RepositoryUri "https://github.com/<myteam>/<nameofrepo>.git" -PersonalAccessToken "1111...." -SourceType "GitHub"

.NOTES
The script uses the current Azure context. To set the context, use Set-AzContext.

#>


[CmdletBinding()]
Param(

    [Parameter(Mandatory=$true)]
    $LabName,

    [Parameter(Mandatory=$true)]
    $LabResourceGroupName,
    $ArtifactRepositoryName,
    $ArtifactRepositoryDisplayName  = 'Team Artifact Repository',

    [Parameter(Mandatory=$true)]
    $RepositoryUri,
    $RepositoryBranch = 'main',
    $FolderPath = '/Artifacts',

    [Parameter(Mandatory=$true)]
    $PersonalAccessToken ,

    [Parameter(Mandatory=$true)]
    [ValidateSet('VsoGit', 'GitHub')]
    $SourceType
)

# Set artifact repository internal name if not specified.

if ($ArtifactRepositoryName -eq $null){
    $ArtifactRepositoryName = "PrivateRepo" + (Get-Random -Maximum 999)
}

# Sign in to Azure.
Connect-AzAccount


#Get Lab Resource.
$LabResource = Get-AzResource -ResourceType 'Microsoft.DevTestLab/labs' -ResourceName $LabName -ResourceGroupName $LabResourceGroupName

Write-Verbose "Lab Name: $($LabResource.Name)"
Write-Verbose "Lab Resource Group Name: $($LabResource.ResourceGroupName)"
Write-Verbose "Lab Resource Location: $($LabResource.Location)"

Write-Verbose "Artifact Repository Internal Name: $ArtifactRepositoryName"

#Prepare properties object for the call to New-AzResource.
$propertiesObject = @{
    uri = $RepositoryUri;
    folderPath = $FolderPath;
    branchRef = $RepositoryBranch;
    displayName = $ArtifactRepositoryDisplayName;
    securityToken = $PersonalAccessToken;
    sourceType = $SourceType;
    status = 'Enabled'
}

Write-Verbose "Properties to be passed to New-AzResource:$($propertiesObject | Out-String)"

#Add resource to the current subscription.
$resourcetype = 'Microsoft.DevTestLab/labs/artifactSources'
$resourceName = $LabName + '/' + $ArtifactRepositoryName
Write-Verbose "Az ResourceType: $resourcetype"
Write-Verbose "Az ResourceName: $resourceName"

Write-Verbose "Creating artifact repository '$ArtifactRepositoryDisplayName'..."
$result = New-AzResource -Location $LabResource.Location -ResourceGroupName $LabResource.ResourceGroupName -properties $propertiesObject -ResourceType $resourcetype -ResourceName $resourceName -ApiVersion 2016-05-15 -Force

#Alternate implementation:
# Use resourceId rather than resourcetype and resourcename parameters.
# Using resourceId lets you specify the $SubscriptionId rather than using the
# subscription id of Get-AzContext.
#$resourceId = "/subscriptions/$SubscriptionId/resourceGroups/$($LabResource.ResourceGroupName)/providers/Microsoft.DevTestLab/labs/$LabName/artifactSources/$ArtifactRepositoryName"
#$result = New-AzResource -properties $propertiesObject -ResourceId $resourceId -ApiVersion 2016-05-15 -Force


# Check the result.
if ($result.Properties.ProvisioningState -eq "Succeeded") {
    Write-Verbose ("Successfully added artifact repository source '$ArtifactRepositoryDisplayName'")
}
else {
    Write-Error ("Error adding artifact repository source '$ArtifactRepositoryDisplayName'")
}

#Return the newly created resource to use in later scripts.
return $result

المعلمات

يأخذ البرنامج النصي PowerShell المعلمات التالية:

المعلمة ‏‏الوصف‬
LabName اسم المختبر.
ArtifactRepositoryName اسم مستودع البيانات الاصطناعية الجديد. ينشئ البرنامج النصي اسمًا عشوائيًا للمستودع إذا لم يتم تحديده.
ArtifactRepositoryDisplayName اسم العرض الذي يظهر في قائمة مستودع البيانات الاصطناعية للمعمل.
RepositoryUri URI لمستودع البيانات الاصطناعية، الذي نسخته سابقًا.
RepositoryBranch فرع المستودع الذي يحتوي على البيانات الاصطناعية. القيمة الافتراضية هي main.
FolderPath المجلد الذي يحتوي على البيانات الاصطناعية. القيمة الافتراضية هي /Artifacts.
PersonalAccessToken رمز الأمان للوصول إلى المستودع، الذي نسخته سابقًا.
SourceType ما إذا كان مستودع البيانات الاصطناعية هو مستودع VSOGit (Azure Repos) أو GitHub.

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

#Set artifact repository name, if not set by user
if ($ArtifactRepositoryName -eq $null){
    $ArtifactRepositoryName = "PrivateRepo" + (Get-Random -Maximum 999)
}

أوامر PowerShell

يستخدم البرنامج النصي أوامر PowerShell التالية:

الأمر ملاحظات
Get-AzResource الحصول على تفاصيل حول المعمل، مثل موقعه. يمكنك إنشاء مصدر مستودع البيانات الاصطناعية في نفس الموقع وتحت نفس مجموعة الموارد مثل المعمل.
New-AzResourceGroup إضافة مورد Azure. لا يوجد أمر محدد لإضافة مستودعات البيانات الاصطناعية. يحتاج cmdlet هذا إما إلى ResourceId أو ResourceName وResourceType لمعرفة نوع المورد المراد إنشاؤه. يستخدم البرنامج النصي الحالي زوج ResourceName وResourceType.

من الطرق الجيدة لاكتشاف اسم المورد ومعلومات نوع المورد استخدام موقع ويب Azure REST API Browser. تعرض مصادر البيانات الاصطناعية لمعامل DevTest واجهات برمجة تطبيقات REST لإنشاء مصادر البيانات الاصطناعية لمعامل DevTest وإدارتها. يستخدم البرنامج النصي الحالي معرف المورد التالي:

https://management.azure.com/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DevTestLab/labs/{labName}/artifactsources/{name}

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

$resourcetype = 'Microsoft.DevTestLab/labs/artifactSources'
$resourceName = $LabName + '/' + $ArtifactRepositoryName

تشغيل برنامج PowerShell النصي

قم بتشغيل البرنامج النصي PowerShell، واستبدال القيم الخاصة بك لقيم المثال في LabName وLabResourceGroupName وArtifactRepositoryName وRepositoryUri وPersonalAccessToken وSourceType:

Set-AzContext -SubscriptionId <Your Azure subscription ID>

.\New-DevTestLabArtifactRepository.ps1 -LabName "mydevtestlab" -LabResourceGroupName "mydtlrg" -ArtifactRepositoryName "myteamrepository" -RepositoryUri "https://github.com/myteam/myteamrepository.git" - "1111...." -SourceType "GitHub"

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