Artefacten toevoegen aan DevTest Labs-VM's

In dit artikel wordt beschreven hoe u artefacten toevoegt aan Azure DevTest Labs virtuele machines (VM's). Artefacten geven acties op die moeten worden uitgevoerd om een VM in te richten, zoals het uitvoeren van Windows PowerShell scripts, het uitvoeren van Bash-opdrachten of het installeren van software. U kunt parameters gebruiken om de artefacten aan uw eigen behoeften aan te passen.

DevTest Labs-artefacten kunnen afkomstig zijn van de openbare DevTest Labs Git-opslagplaats of uit persoonlijke Git-opslagplaatsen. Zie Aangepaste artefacten maken om uw eigen aangepaste artefacten te maken en op te slaan in een opslagplaats. Als u de opslagplaats voor artefacten wilt toevoegen aan een lab, zodat labgebruikers toegang hebben tot de aangepaste artefacten, raadpleegt u Een opslagplaats voor artefacten toevoegen aan uw lab.

Labeigenaren van DevTest Labs kunnen verplichte artefacten opgeven die moeten worden geïnstalleerd op alle lab-VM's bij het maken. Zie Verplichte artefacten opgeven voor DevTest Labs-VM's voor meer informatie.

U kunt verplichte artefacten niet wijzigen of verwijderen tijdens het maken van de VM, maar u kunt wel alle beschikbare afzonderlijke artefacten toevoegen. In dit artikel wordt beschreven hoe u beschikbare artefacten toevoegt aan VM's met behulp van de Azure Portal of Azure PowerShell.

Artefacten toevoegen aan VM's vanuit de Azure Portal

U kunt artefacten toevoegen tijdens het maken van een VM of artefacten toevoegen aan bestaande lab-VM's.

Artefacten toevoegen tijdens het maken van de VM:

  1. Selecteer Toevoegen op de startpagina van het lab.

  2. Selecteer op de pagina Kies een basis het gewenste type VM.

  3. Selecteer in het scherm Labresource makende optie Artefacten toevoegen of verwijderen.

  4. Selecteer op de pagina Artefacten toevoegen de pijl naast elk artefact dat u aan de VIRTUELE machine wilt toevoegen.

  5. Voer in elk deelvenster Artefact toevoegen de vereiste en optionele parameterwaarden in en selecteer vervolgens OK. Het artefact wordt weergegeven onder Geselecteerde artefacten en het aantal geconfigureerde artefacten wordt bijgewerkt.

    Schermopname van het toevoegen van artefacten in het deelvenster Artefacten toevoegen.

  6. U kunt de artefacten wijzigen nadat u ze hebt toegevoegd.

    • Artefacten worden standaard geïnstalleerd in de volgorde waarin u ze toevoegt. Als u de volgorde wilt wijzigen, selecteert u het beletselteken ... naast het artefact in de lijst Geselecteerde artefacten en selecteert u Omhoog, Omlaag, Verplaatsen naar boven of Naar beneden.
    • Als u de parameters van het artefact wilt bewerken, selecteert u Bewerken om het deelvenster Artefact toevoegen opnieuw te openen .
    • Als u het artefact wilt verwijderen uit de lijst Geselecteerde artefacten , selecteert u Verwijderen.
  7. Wanneer u klaar bent met het toevoegen en rangschikken van artefacten, selecteert u OK.

  8. In het scherm Labresource maken ziet u het aantal toegevoegde artefacten. Als u artefacten wilt toevoegen, bewerken, rangschikken of verwijderen voordat u de virtuele machine maakt, selecteert u opnieuw Artefacten toevoegen of verwijderen .

Nadat u de VM hebt gemaakt, worden de geïnstalleerde artefacten weergegeven op de pagina Artefacten van de VM. Als u details over de installatie van elk artefact wilt zien, selecteert u de naam van het artefact.

Artefacten installeren op een bestaande VM:

  1. Selecteer op de startpagina van het lab de VM in de lijst Mijn virtuele machines .

  2. Selecteer artefacten op de pagina VM in de bovenste menubalk of linkernavigatiebalk.

  3. Selecteer op de pagina Artefactende optie Artefacten toepassen.

    Schermopname van het deelvenster Artefacten voor een bestaande V M.

  4. Op de pagina Artefacten toevoegen selecteert en configureert u artefacten op dezelfde wijze als voor een nieuwe VM.

  5. Wanneer u klaar bent met het toevoegen van artefacten, selecteert u Installeren. De artefacten worden onmiddellijk op de VM geïnstalleerd.

Artefacten toevoegen aan VM's met behulp van Azure PowerShell

Notitie

Het wordt aanbevolen de Azure Az PowerShell-module te gebruiken om te communiceren met Azure. Zie Azure PowerShell installeren om aan de slag te gaan. Raadpleeg Azure PowerShell migreren van AzureRM naar Az om te leren hoe u naar de Azure PowerShell-module migreert.

Met het volgende PowerShell-script wordt een artefact op een VM toegepast met behulp van de cmdlet 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"
}

Volgende stappen