Delen via


Artefacten toevoegen aan DevTest Labs-VM's

In dit artikel wordt beschreven hoe u artefacten toevoegt aan virtuele machines (VM's ) van Azure DevTest Labs. Artefacten geven acties op die moeten worden uitgevoerd voor het inrichten van een virtuele machine, 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 te passen aan uw eigen behoeften.

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

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

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

Artefacten toevoegen aan VM's vanuit Azure Portal

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

Artefacten toevoegen tijdens het maken van de VIRTUELE machine:

  1. Selecteer Toevoegen op de startpagina van het lab.

  2. Selecteer op de basispagina Een basispagina het gewenste type virtuele machine.

  3. Selecteer artefacten toevoegen of verwijderen in het scherm Labresource maken.

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

  5. Voer in elk deelvenster Artefact toevoegen alle 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, Naar boven gaan of Naar beneden verplaatsen.
    • Als u de parameters van het artefact wilt bewerken, selecteert u Bewerken om het deelvenster Artefact toevoegen opnieuw te openen.
    • Als u het artefact uit de lijst met geselecteerde artefacten wilt verwijderen, 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 de artefacten wilt toevoegen, bewerken, opnieuw rangschikken of verwijderen voordat u de virtuele machine maakt, selecteert u Artefacten toevoegen of verwijderen.

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

Artefacten installeren op een bestaande VM:

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

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

  3. Selecteer Artefacten toepassen op de pagina Artefacten.

    Schermopname van het deelvenster Artefacten voor een bestaande V M.

  4. Selecteer en configureer artefacten op de pagina Artefacten toevoegen hetzelfde als voor een nieuwe VIRTUELE machine.

  5. Wanneer u klaar bent met het toevoegen van artefacten, selecteert u Installeren. De artefacten worden onmiddellijk op de VIRTUELE machine 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 toegepast op een VIRTUELE machine 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