Aggiungere elementi alle macchine virtuali DevTest Labs

Questo articolo descrive come aggiungere elementi alle macchine virtuali Azure DevTest Labs. Gli artefatti specificano azioni da eseguire per effettuare il provisioning di una macchina virtuale, ad esempio l'esecuzione di script Windows PowerShell, l'esecuzione di comandi Bash o l'installazione del software. È possibile usare i parametri per personalizzare gli artefatti per le proprie esigenze.

Gli artefatti di DevTest Labs possono venire dal repository Git di DevTest Labs pubblico o dai repository Git privati. Per creare elementi personalizzati e archiviarli in un repository, vedere Creare artefatti personalizzati. Per aggiungere il repository degli artefatti a un lab in modo che gli utenti del lab possano accedere agli artefatti personalizzati, vedere Aggiungere un repository di artefatti al lab.

I proprietari del lab DevTest Labs possono specificare elementi obbligatori da installare in tutte le macchine virtuali lab alla creazione. Per altre informazioni, vedere Specificare elementi obbligatori per le macchine virtuali DevTest Labs.

Non è possibile modificare o rimuovere artefatti obbligatori in fase di creazione della macchina virtuale, ma è possibile aggiungere tutti gli elementi singoli disponibili. Questo articolo descrive come aggiungere elementi disponibili alle macchine virtuali usando l'portale di Azure o il Azure PowerShell.

Aggiungere elementi alle macchine virtuali dall'portale di Azure

È possibile aggiungere elementi durante la creazione di macchine virtuali o aggiungere elementi alle macchine virtuali lab esistenti.

Per aggiungere elementi durante la creazione di macchine virtuali:

  1. Nella home page del lab selezionare Aggiungi.

  2. Nella pagina Scegliere una base selezionare il tipo di macchina virtuale desiderata.

  3. Nella schermata Crea risorsa lab selezionare Aggiungi o Rimuovi elementi.

  4. Nella pagina Aggiungi artefatti selezionare la freccia accanto a ogni elemento da aggiungere alla macchina virtuale.

  5. In ogni riquadro Aggiungi artefatto immettere tutti i valori dei parametri obbligatori e facoltativi e quindi selezionare OK. L'artefatto viene visualizzato in Artefatti selezionati e il numero di aggiornamenti degli artefatti configurati.

    Screenshot che mostra l'aggiunta di elementi nel riquadro Aggiungi elementi.

  6. È possibile modificare gli artefatti dopo averli aggiunti.

    • Per impostazione predefinita, gli artefatti vengono installati nell'ordine di aggiunta. Per riorganizzare l'ordine, selezionare i puntini di sospensione ... accanto all'artefatto nell'elenco Elementi selezionati e selezionare Sposta verso l'alto, Sposta verso il basso, Sposta verso l'alto o Sposta verso il basso.
    • Per modificare i parametri dell'artefatto, selezionare Modifica per riaprire il riquadro Aggiungi artefatto .
    • Per eliminare l'artefatto dall'elenco Elementi selezionati , selezionare Elimina.
  7. Al termine dell'aggiunta e della disposizione degli artefatti, selezionare OK.

  8. La schermata Crea risorsa lab mostra il numero di artefatti aggiunti. Per aggiungere, modificare, riorganizzare o eliminare gli artefatti prima di creare la macchina virtuale, selezionare Di nuovo Aggiungi o Rimuovi elementi .

Dopo aver creato la macchina virtuale, gli artefatti installati vengono visualizzati nella pagina Artefatti della macchina virtuale. Per visualizzare i dettagli sull'installazione di ogni artefatto, selezionare il nome dell'artefatto.

Per installare gli artefatti in una macchina virtuale esistente:

  1. Nella home page del lab selezionare la macchina virtuale dall'elenco Macchine virtuali personali.

  2. Nella pagina macchina virtuale selezionare Artefatti nella barra dei menu in alto o nello spostamento a sinistra.

  3. Nella pagina Artefatti selezionare Applica elementi.

    Screenshot che mostra il riquadro Artefatti per una V M esistente.

  4. Nella pagina Aggiungi artefatti selezionare e configurare gli artefatti uguali a per una nuova macchina virtuale.

  5. Al termine dell'aggiunta di elementi, selezionare Installa. Gli artefatti vengono installati immediatamente nella macchina virtuale.

Aggiungere elementi alle macchine virtuali usando Azure PowerShell

Nota

È consigliabile usare il modulo Azure Az PowerShell per interagire con Azure. Per iniziare, vedere Installare Azure PowerShell. Per informazioni su come eseguire la migrazione al modulo AZ PowerShell, vedere Eseguire la migrazione di Azure PowerShell da AzureRM ad Az.

Lo script di PowerShell seguente applica un artefatto a una macchina virtuale usando il 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"
}

Passaggi successivi