Sdílet prostřednictvím


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

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

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 Vytvář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í nainstalovat na všechny virtuální počítače testovacího prostředí při vytváření. 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 do virtuálních počítačů dostupné artefakty pomocí webu Azure Portal nebo Azure PowerShellu.

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

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

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 Zvolit základní stránku 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 aktualizací nakonfigurovaných artefaktů.

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

  6. Artefakty můžete po 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, Přesunout nahoru nebo Přesunout dolů.
    • Pokud chcete upravit parametry artefaktu, vyberte Upravit a znovu otevřete podokno Přidat artefakt .
    • Pokud chcete odstranit artefakt ze seznamu Vybrané artefakty , vyberte Odstranit.
  7. Až budete hotovi s přidáváním a uspořádáním artefaktů, vyberte OK.

  8. Na obrazovce Vytvořit prostředek testovacího prostředí se zobrazuje počet přidaných artefaktů. Pokud chcete přidat, upravit, změnit uspořádání nebo odstranit artefakty před vytvořením virtuálního počítače, 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 Artefakty vyberte Použít artefakty.

    Snímek obrazovky znázorňující podokno Artefakty pro existující virtuální počítač

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

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

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

Poznámka:

Při práci s Azure doporučujeme používat modul Azure Az PowerShellu. Pokud chcete začít, přečtěte si 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