Přidání artefaktů do virtuálních počítačů DevTest Labs

Tento článek popisuje, jak přidat artefakty do Azure DevTest Labs virtuálních počítačů. Artefakty určují akce, které se mají provést při zřízení virtuálního počítače, jako je spouštění skriptů Windows PowerShell, spouštění příkazů Bash nebo instalace softwaru. Pomocí parametrů si můžete artefakty přizpůsobit podle svých potřeb.

Artefakty DevTest Labs můžou pocházet z veřejného úložiště DevTest Labs Git nebo z privátních úložišť Git. Pokud chcete vytvořit vlastní artefakty a uložit je do úložiště, přečtěte si téma Vytvoření vlastních artefaktů. Pokud chcete přidat úložiště artefaktů do testovacího prostředí, aby uživatelé testovacího prostředí mohli přistupovat k vlastním artefaktům, přečtěte si téma Přidání úložiště artefaktů do testovacího prostředí.

Vlastníci testovacího prostředí DevTest Labs můžou určit povinné artefakty, které se mají při vytvoření nainstalovat do všech virtuálních počítačů testovacího prostředí. Další informace najdete v tématu Určení povinných artefaktů pro virtuální počítače DevTest Labs.

Při vytváření virtuálního počítače nemůžete měnit ani odebírat povinné artefakty, ale můžete přidat všechny dostupné jednotlivé artefakty. Tento článek popisuje, jak přidat dostupné artefakty do virtuálních počítačů pomocí Azure Portal nebo Azure PowerShell.

Přidání artefaktů do virtuálních počítačů z Azure Portal

Artefakty můžete přidávat během vytváření virtuálních počítačů nebo přidávat artefakty do existujících virtuálních počítačů testovacího prostředí.

Přidání artefaktů během vytváření virtuálního počítače:

  1. Na domovské stránce testovacího prostředí vyberte Přidat.

  2. Na stránce Zvolte základ vyberte požadovaný typ virtuálního počítače.

  3. Na obrazovce Vytvořit prostředek testovacího prostředí vyberte Přidat nebo odebrat artefakty.

  4. Na stránce Přidat artefakty vyberte šipku vedle každého artefaktu, který chcete přidat do virtuálního počítače.

  5. V každém podokně Přidat artefakt zadejte požadované a volitelné hodnoty parametrů a pak vyberte OK. Artefakt se zobrazí v části Vybrané artefakty a počet nakonfigurovaných artefaktů se aktualizuje.

    Snímek obrazovky znázorňující přidávání artefaktů v podokně Přidat artefakty

  6. Artefakty můžete po jejich přidání změnit.

    • Ve výchozím nastavení se artefakty instalují v pořadí, v jakém je přidáte. Pokud chcete změnit uspořádání pořadí, vyberte tři tečky ... vedle artefaktu v seznamu Vybrané artefakty a vyberte Přesunout nahoru, Přesunout dolů, Přesunout nahoru nebo Přesunout dolů.
    • Pokud chcete upravit parametry artefaktu, vyberte Upravit a znovu otevřete podokno Přidat artefakt .
    • Pokud chcete artefakt odstranit ze seznamu Vybrané artefakty , vyberte Odstranit.
  7. Až přidávání a uspořádání artefaktů dokončíte, vyberte OK.

  8. Na obrazovce Vytvořit prostředek testovacího prostředí se zobrazuje počet přidaných artefaktů. Pokud chcete před vytvořením virtuálního počítače přidat, upravit, změnit uspořádání nebo odstranit artefakty, znovu vyberte Přidat nebo odebrat artefakty .

Po vytvoření virtuálního počítače se nainstalované artefakty zobrazí na stránce Artefakty virtuálního počítače. Pokud chcete zobrazit podrobnosti o instalaci jednotlivých artefaktů, vyberte název artefaktu.

Instalace artefaktů na existující virtuální počítač:

  1. Na domovské stránce testovacího prostředí vyberte virtuální počítač ze seznamu Moje virtuální počítače .

  2. Na stránce virtuálního počítače vyberte Artefakty v horním řádku nabídek nebo v levém navigačním panelu.

  3. Na stránce Artifacts (Artefakty) vyberte Apply artifacts (Použít artefakty).

    Snímek obrazovky zobrazující podokno Artefakty pro existující V M

  4. Na stránce Přidat artefakty vyberte a nakonfigurujte artefakty stejně jako pro nový virtuální počítač.

  5. Až přidávání artefaktů dokončíte, vyberte Nainstalovat. Artefakty se na virtuální počítač nainstalují okamžitě.

Přidání artefaktů do virtuálních počítačů pomocí Azure PowerShell

Poznámka

Při práci s Azure doporučujeme používat modul Azure Az PowerShellu. Začněte tím, že si projdete téma Instalace Azure PowerShellu. Informace o tom, jak migrovat na modul Az PowerShell, najdete v tématu Migrace Azure PowerShellu z AzureRM na Az.

Následující skript PowerShellu použije artefakt na virtuální počítač pomocí rutiny 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"
}

Další kroky