Lägga till artefakter i virtuella DevTest Labs-datorer

Den här artikeln beskriver hur du lägger till artefakter i Azure DevTest Labs virtuella datorer (VM). Artefakter anger vilka åtgärder som ska utföras för att etablera en virtuell dator, till exempel att köra Windows PowerShell skript, köra Bash-kommandon eller installera programvara. Du kan använda parametrar för att anpassa artefakterna efter dina egna behov.

DevTest Labs-artefakter kan komma från den offentliga DevTest Labs Git-lagringsplatsen eller från privata Git-lagringsplatser. Information om hur du skapar egna anpassade artefakter och lagrar dem på en lagringsplats finns i Skapa anpassade artefakter. Information om hur du lägger till din artefaktlagringsplats i ett labb så att labbanvändare kan komma åt anpassade artefakter finns i Lägga till en artefaktlagringsplats i labbet.

DevTest Labs-labbägare kan ange obligatoriska artefakter som ska installeras på alla virtuella labbdatorer när de skapas. Mer information finns i Ange obligatoriska artefakter för virtuella DevTest Labs-datorer.

Du kan inte ändra eller ta bort obligatoriska artefakter när den virtuella datorn skapas, men du kan lägga till alla tillgängliga enskilda artefakter. Den här artikeln beskriver hur du lägger till tillgängliga artefakter till virtuella datorer med hjälp av Azure Portal eller Azure PowerShell.

Lägga till artefakter till virtuella datorer från Azure Portal

Du kan lägga till artefakter när den virtuella datorn skapas eller lägga till artefakter i befintliga virtuella labbdatorer.

Så här lägger du till artefakter när den virtuella datorn skapas:

  1. På labbets startsida väljer du Lägg till.

  2. På sidan Välj en bas väljer du den typ av virtuell dator som du vill använda.

  3. På skärmen Skapa labbresurs väljer du Lägg till eller Ta bort artefakter.

  4. På sidan Lägg till artefakter väljer du pilen bredvid varje artefakt som du vill lägga till i den virtuella datorn.

  5. I varje fönstret Lägg till artefakt anger du eventuella obligatoriska och valfria parametervärden och väljer sedan OK. Artefakten visas under Valda artefakter och antalet konfigurerade artefakter uppdateras.

    Skärmbild som visar hur du lägger till artefakter i fönstret Lägg till artefakter.

  6. Du kan ändra artefakterna när du har lagt till dem.

    • Som standard installeras artefakter i den ordning du lägger till dem. Om du vill ordna om ordningen väljer du ellipsen ... bredvid artefakten i listan Markerade artefakter och väljer Flytta upp, Flytta ned, Flytta till överkant eller Flytta till nederkant.
    • Om du vill redigera artefaktens parametrar väljer du Redigera för att öppna fönstret Lägg till artefakt igen.
    • Om du vill ta bort artefakten från listan Markerade artefakter väljer du Ta bort.
  7. När du är klar med att lägga till och ordna artefakter väljer du OK.

  8. Skärmen Skapa labbresurs visar antalet tillagda artefakter. Om du vill lägga till, redigera, ordna om eller ta bort artefakterna innan du skapar den virtuella datorn väljer du Lägg till eller Ta bort artefakter igen.

När du har skapat den virtuella datorn visas de installerade artefakterna på den virtuella datorns artefaktsida . Om du vill se information om varje artefakts installation väljer du artefaktnamnet.

Så här installerar du artefakter på en befintlig virtuell dator:

  1. På labbets startsida väljer du den virtuella datorn i listan Mina virtuella datorer .

  2. På den virtuella datorn väljer du Artefakter i det övre menyfältet eller det vänstra navigeringsfältet.

  3. På sidan Artefakter väljer du Tillämpa artefakter.

    Skärmbild som visar fönstret Artefakter för en befintlig V M.

  4. På sidan Lägg till artefakter väljer och konfigurerar du artefakter på samma sätt som för en ny virtuell dator.

  5. När du är klar med att lägga till artefakter väljer du Installera. Artefakterna installeras omedelbart på den virtuella datorn.

Lägga till artefakter i virtuella datorer med hjälp av Azure PowerShell

Anteckning

Vi rekommenderar att du använder Azure Az PowerShell-modulen för att interagera med Azure. Se Installera Azure PowerShell för att komma igång. Information om hur du migrerar till Az PowerShell-modulen finns i artikeln om att migrera Azure PowerShell från AzureRM till Az.

Följande PowerShell-skript tillämpar en artefakt på en virtuell dator med hjälp av cmdleten Invoke-AzResourceAction .

#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"
}

Nästa steg