إضافة بيانات اصطناعية إلى DevTest Labs VMs

توضح هذه المقالة كيفية إضافة بيانات اصطناعية إلى أجهزة Azure DevTest Labs (VMs) الظاهرية. تحدد البيانات الاصطناعية الإجراءات التي يلزم اتخاذها لتوفير جهاز افتراضي، مثل تشغيل البرامج النصية لـ Windows PowerShell أو تشغيل أوامر Bash أو تثبيت البرامج. يمكنك استخدام المعلمات لتخصيص البيانات الاصطناعية للاحتياجات المخصصة الخاصة بك.

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

يمكن لمالكي معمل DevTest Labs تحديد عناصر إلزامية لتثبيتها على جميع الأجهزة الافتراضية للمختبر عند الإنشاء. للمزيد من المعلومات، تأكد من مراجعة تحديد البيانات الاصطناعية الإلزامية لـ DevTest Labs VMs.

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

إضافة بيانات اصطناعية إلى الأجهزة الظاهرية من مدخل Microsoft Azure

يمكنك إضافة بيانات اصطناعية أثناء إنشاء جهاز ظاهري، أو إضافة بيانات اصطناعية إلى أجهزة ظاهرية معملية موجودة.

لإضافة بيانات اصطناعية أثناء إنشاء الجهاز الظاهري:

  1. في الصفحة الرئيسية للمختبر، حدد Add.

  2. في صفحة اختيار أساس، حدد نوع الجهاز الظاهري الذي تريده.

  3. في شاشة Create lab resource، حدد Add or Remove Artifacts.

  4. في صفحة Add artifacts، حدد السهم الموجود بجانب كل أداة تريد إضافتها إلى الجهاز الظاهري.

  5. في كل جزء Add artifact، أدخل أي قيم معلمات مطلوبة واختيارية، ثم حدد OK. تظهر الأداة ضمن بيانات اصطناعية محددة، وعدد تحديثات البيانات الاصطناعية المكونة.

    لقطة شاشة تعرض إضافة البيانات الاصطناعية في جزء Add artifacts.

  6. يمكنك أن تغير البيانات الاصطناعية بعد إضافتها.

    • بشكل افتراضي، تُثبت البيانات الاصطناعية بالترتيب الذي تضيفها إليه. لإعادة ترتيب الترتيب، حدد علامة الحذف ... بجوار البيانات الاصطناعية في قائمة البيانات الاصطناعية المحددة، وحدد Move up، أو Move down، أو Move to top، أو Move to bottom.
    • لتحرير معلمات البيانات الاصطناعية، حدد Edit لإعادة فتح الجزء الخاص بـ Add artifact.
    • لحذف البيانات الاصطناعية من قائمة البيانات الاصطناعية المحددة، حدد Delete.
  7. عند الانتهاء من إضافة البيانات الاصطناعية وترتيبها، حدد OK.

  8. توضح شاشة Create lab resource عدد البيانات الاصطناعية المضافة. لإضافة البيانات الاصطناعية أو تحريرها أو إعادة ترتيبها أو حذفها قبل إنشاء الجهاز الظاهري، حدد Add or Remove Artifacts مرة أخرى.

بعد إنشاء الجهاز الظاهري، تظهر البيانات الاصطناعية المثبتة على صفحة Artifacts الخاصة بالجهاز الظاهري. للاطلاع على تفاصيل عن تثبيت كل أداة، حدد اسم البيانات الاصطناعية.

لتثبيت بيانات اصطناعية على جهاز ظاهري موجود:

  1. من الصفحة الرئيسية للمختبر، حدد الجهاز الظاهري من قائمة الأجهزة الظاهرية الخاصة بي.

  2. في صفحة الجهاز الظاهري، حدد Artifacts الموجود في شريط القوائم العلوي أو التنقل الأيسر.

  3. في صفحة Artifacts، حدد Apply artifacts.

    لقطة شاشة تعرض جزء Artifacts ل V M موجود.

  4. في صفحة Add artifacts، حدد البيانات الاصطناعية وكونها بنفس طريقة تكوين الجهاز الظاهري الجديد.

  5. عند الانتهاء من إضافة البيانات الاصطناعية، حدد Install. تُثبت البيانات الاصطناعية على الجهاز الظاهري في الحال.

أضف البيانات الاصطناعية إلى الأجهزة الظاهرية باستخدام Azure PowerShell

ملاحظة

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

يطبق البرنامج النصي PowerShell التالي أداة على جهاز ظاهري عن طريق استخدام Invoke-AzResourceAction cmdlet.

#Requires -Module Az.Resources

param
(
[Parameter(Mandatory=$true, HelpMessage="The ID of the subscription that contains the lab")]
   [string] $SubscriptionId,
[Parameter(Mandatory=$true, HelpMessage="The name of the lab that has the VM")]
   [string] $DevTestLabName,
[Parameter(Mandatory=$true, HelpMessage="The name of the VM")]
   [string] $VirtualMachineName,
[Parameter(Mandatory=$true, HelpMessage="The repository where the artifact is stored")]
   [string] $RepositoryName,
[Parameter(Mandatory=$true, HelpMessage="The artifact to apply to the VM")]
   [string] $ArtifactName,
[Parameter(ValueFromRemainingArguments=$true)]
   $Params
)

# Set the appropriate subscription
Set-AzContext -SubscriptionId $SubscriptionId | Out-Null
 
# Get the lab resource group name
$resourceGroupName = (Get-AzResource -ResourceType 'Microsoft.DevTestLab/labs' | Where-Object { $_.Name -eq $DevTestLabName}).ResourceGroupName
if ($resourceGroupName -eq $null) { throw "Unable to find lab $DevTestLabName in subscription $SubscriptionId." }

# Get the internal repository name
$repository = Get-AzResource -ResourceGroupName $resourceGroupName `
                    -ResourceType 'Microsoft.DevTestLab/labs/artifactsources' `
                    -ResourceName $DevTestLabName `
                    -ApiVersion 2016-05-15 `
                    | Where-Object { $RepositoryName -in ($_.Name, $_.Properties.displayName) } `
                    | Select-Object -First 1

if ($repository -eq $null) { "Unable to find repository $RepositoryName in lab $DevTestLabName." }

# Get the internal artifact name
$template = Get-AzResource -ResourceGroupName $resourceGroupName `
                -ResourceType "Microsoft.DevTestLab/labs/artifactSources/artifacts" `
                -ResourceName "$DevTestLabName/$($repository.Name)" `
                -ApiVersion 2016-05-15 `
                | Where-Object { $ArtifactName -in ($_.Name, $_.Properties.title) } `
                | Select-Object -First 1

if ($template -eq $null) { throw "Unable to find template $ArtifactName in lab $DevTestLabName." }

# Find the VM in Azure
$FullVMId = "/subscriptions/$SubscriptionId/resourceGroups/$resourceGroupName`
                /providers/Microsoft.DevTestLab/labs/$DevTestLabName/virtualmachines/$virtualMachineName"

$virtualMachine = Get-AzResource -ResourceId $FullVMId

# Generate the artifact id
$FullArtifactId = "/subscriptions/$SubscriptionId/resourceGroups/$resourceGroupName`
                        /providers/Microsoft.DevTestLab/labs/$DevTestLabName/artifactSources/$($repository.Name)`
                        /artifacts/$($template.Name)"

# Handle the input parameters to pass through
$artifactParameters = @()

# Fill the artifact parameter with the additional -param_ data and strip off the -param_
$Params | ForEach-Object {
   if ($_ -match '^-param_(.*)') {
      $name = $_ -replace '^-param_'
   } elseif ( $name ) {
      $artifactParameters += @{ "name" = "$name"; "value" = "$_" }
      $name = $null #reset name variable
   }
}

# Create a structure to pass the artifact data to the action

$prop = @{
artifacts = @(
    @{
        artifactId = $FullArtifactId
        parameters = $artifactParameters
    }
    )
}

# Apply the artifact
if ($virtualMachine -ne $null) {
   # Apply the artifact by name to the virtual machine
   $status = Invoke-AzResourceAction -Parameters $prop -ResourceId $virtualMachine.ResourceId -Action "applyArtifacts" -ApiVersion 2016-05-15 -Force
   if ($status.Status -eq 'Succeeded') {
      Write-Output "##[section] Successfully applied artifact: $ArtifactName to $VirtualMachineName"
   } else {
      Write-Error "##[error]Failed to apply artifact: $ArtifactName to $VirtualMachineName"
   }
} else {
   Write-Error "##[error]$VirtualMachine was not found in the DevTest Lab, unable to apply the artifact"
}

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