Condividi tramite


Esercitazione: Creare e usare un'immagine personalizzata per i set di scalabilità di macchine virtuali con Azure PowerShell

Quando si crea un set di scalabilità, si specifica un'immagine da usare quando vengono distribuite le istanze di macchina virtuale. Per ridurre il numero di attività dopo la distribuzione delle istanze di macchina virtuale, è possibile usare un'immagine di VM personalizzata. Questa immagine di VM personalizzata include le installazioni o le configurazioni delle applicazioni necessarie. Le istanze di macchina virtuale create nel set di scalabilità usano l'immagine di VM personalizzata e sono pronte per gestire il traffico delle applicazioni. In questa esercitazione si apprenderà come:

  • Creare una Galleria di calcolo di Azure
  • Creare una definizione dell'immagine
  • Creare una versione di immagine
  • Creare un set di scalabilità da un'immagine
  • Condividere una raccolta di immagini

Se non si ha una sottoscrizione di Azure, creare un account gratuito prima di iniziare.

Avviare Azure Cloud Shell

Azure Cloud Shell è una shell interattiva gratuita che può essere usata per eseguire la procedura di questo articolo. Include strumenti comuni di Azure preinstallati e configurati per l'uso con l'account.

Per aprire Cloud Shell, basta selezionare Prova nell'angolo superiore destro di un blocco di codice. È anche possibile avviare Cloud Shell in una scheda separata del browser visitando https://shell.azure.com/powershell. Selezionare Copia per copiare i blocchi di codice, incollarli in Cloud Shell e premere INVIO per eseguirli.

Creare e configurare una macchina virtuale di origine

Creare prima di tutto un gruppo di risorse con New-AzResourceGroup, quindi creare una macchina virtuale con New-AzVM. Questa macchina virtuale viene quindi usata come origine per l'immagine. L'esempio seguente crea una macchina virtuale denominata myVM nel gruppo di risorse denominato myResourceGroup:

New-AzResourceGroup -Name 'myResourceGroup' -Location 'EastUS'

New-AzVm `
   -ResourceGroupName 'myResourceGroup' `
   -Name 'myVM' `
   -Location 'East US' `
   -VirtualNetworkName 'myVnet' `
   -SubnetName 'mySubnet' `
   -SecurityGroupName 'myNetworkSecurityGroup' `
   -PublicIpAddressName 'myPublicIpAddress' `
   -OpenPorts 80,3389

Archiviare la variabile di macchina virtuale

È possibile visualizzare un elenco di macchine virtuali disponibili in un gruppo di risorse usando Get-AzVM. Dopo aver appreso il nome della macchina virtuale e il gruppo di risorse, è possibile usare Get-AzVM di nuovo per ottenere l'oggetto vm e archiviarlo in una variabile da usare in un secondo momento. Questo esempio ottiene una macchina virtuale denominata myVM dal gruppo di risorse "myResourceGroup" e la assegna alla variabile $vm.

$sourceVM = Get-AzVM `
   -Name myVM `
   -ResourceGroupName myResourceGroup

Una raccolta di immagini è la risorsa principale usata per l'abilitazione della condivisione di immagini. I caratteri consentiti per il nome della raccolta sono lettere maiuscole o minuscole, cifre, punti e trattini. Il nome della raccolta non può contenere trattini. I nomi di raccolta devono essere univoci all'interno della sottoscrizione.

Creare una raccolta di immagini usando New-AzGallery. L'esempio seguente crea una raccolta denominata myGallery nel gruppo di risorse myGalleryRG .

$resourceGroup = New-AzResourceGroup `
   -Name 'myGalleryRG' `
   -Location 'EastUS'

$gallery = New-AzGallery `
   -GalleryName 'myGallery' `
   -ResourceGroupName $resourceGroup.ResourceGroupName `
   -Location $resourceGroup.Location `
   -Description 'Azure Compute Gallery for my organization'	

Creare una definizione dell'immagine

Le definizioni di immagini creano un raggruppamento logico per le immagini. Vengono usati per gestire le informazioni sulle versioni dell'immagine create all'interno di esse. I nomi delle definizioni di immagine possono essere costituiti da lettere maiuscole o minuscole, cifre, punti, trattini e punti fermi. Per altre informazioni sui valori che è possibile specificare per la definizione di immagine, vedere Definizioni di immagini.

Creare la definizione dell'immagine usando New-AzGalleryImageDefinition. In questo esempio, l'immagine della galleria è denominata myGalleryImage ed è progettata per un uso specializzato.

$galleryImage = New-AzGalleryImageDefinition `
   -GalleryName $gallery.Name `
   -ResourceGroupName $resourceGroup.ResourceGroupName `
   -Location $gallery.Location `
   -Name 'myImageDefinition' `
   -OsState specialized `
   -OsType Windows `
   -Publisher 'myPublisher' `
   -Offer 'myOffer' `
   -Sku 'mySKU'

Creare una versione di immagine

Creare una versione dell'immagine da una macchina virtuale usando New-AzGalleryImageVersion.

I caratteri consentiti per la versione dell'immagine sono numeri e punti. I numeri devono essere compresi nell'intervallo di un valore Integer a 32 bit. Formato: VersionePrincipale.VersioneSecondaria.Patch.

In questo esempio la versione dell'immagine è 1.0.0 e viene replicata nei data center degli Stati Uniti orientali e degli Stati Uniti centro-meridionali . Quando si scelgono le aree di destinazione per la replica, è necessario includere l'area di origine come destinazione per la replica.

Per creare una versione dell'immagine dalla macchina virtuale, usare $vm.Id.ToString() per -Source.

$region1 = @{Name='South Central US';ReplicaCount=1}
$region2 = @{Name='East US';ReplicaCount=2}
$targetRegions = @($region1,$region2)

New-AzGalleryImageVersion `
   -GalleryImageDefinitionName $galleryImage.Name`
   -GalleryImageVersionName '1.0.0' `
   -GalleryName $gallery.Name `
   -ResourceGroupName $resourceGroup.ResourceGroupName `
   -Location $resourceGroup.Location `
   -TargetRegion $targetRegions  `
   -Source $sourceVM.Id.ToString() `
   -PublishingProfileEndOfLifeDate '2023-12-01'

La replica dell'immagine in tutte le aree di destinazione può richiedere del tempo.

Creare un set di scalabilità dall'immagine

Creare ora un set di scalabilità con New-AzVmss che usa il -ImageName parametro per definire l'immagine di macchina virtuale personalizzata creata nel passaggio precedente. Per distribuire il traffico alle singole istanze di macchine virtuali, viene creato anche un servizio di bilanciamento del carico. Il servizio di bilanciamento del carico include regole per la distribuzione del traffico sulla porta TCP 80, oltre che per consentire il traffico di Desktop remoto sulla porta TCP 3389 e la comunicazione remota di PowerShell sulla porta TCP 5985. Quando richiesto, fornire le proprie credenziali amministrative desiderate per le istanze di macchina virtuale nel set di scalabilità:

Importante

A partire da novembre 2023, i set di scalabilità di macchine virtuali creati con PowerShell e l'interfaccia della riga di comando di Azure avranno per impostazione predefinita la modalità di orchestrazione flessibile se non è specificata alcuna modalità di orchestrazione. Per altre informazioni su questa modifica e sulle azioni da eseguire, vedere Modifica che causa un'interruzione per i clienti di PowerShell/CLI di VMSS - Hub della community Microsoft

# Define variables for the scale set
$resourceGroupName = "myScaleSet"
$scaleSetName = "myScaleSet"
$location = "East US"

# Create a resource group
New-AzResourceGroup -ResourceGroupName $resourceGroupName -Location $location

# Create a configuration 
$vmssConfig = New-AzVmssConfig `
   -Location $location `
   -OrchestrationMode Flexible `
   -SkuCapacity 2 `
   -SkuName "Standard_D2s_v3"

# Reference the image version
Set-AzVmssStorageProfile $vmssConfig `
  -OsDiskCreateOption "FromImage" `
  -ImageReferenceId $galleryImage.Id

# Create the scale set 
New-AzVmss `
  -ResourceGroupName $resourceGroupName `
  -Name $scaleSetName `
  -VirtualMachineScaleSet $vmssConfig

La creazione e la configurazione di tutte le macchine virtuali e risorse del set di scalabilità richiedono alcuni minuti.

È consigliabile condividere l'accesso a livello di raccolta immagini. Usare un indirizzo di posta elettronica e il cmdlet Get-AzADUser per ottenere l'ID oggetto per l'utente e quindi usare New-AzRoleAssignment per concedere l'accesso alla raccolta. Sostituire il messaggio di posta elettronica di esempio, alinne_montes@contoso.com in questo esempio, con le proprie informazioni.

# Get the object ID for the user
$user = Get-AzADUser -StartsWith alinne_montes@contoso.com
# Grant access to the user for our gallery
New-AzRoleAssignment `
   -ObjectId $user.Id `
   -RoleDefinitionName Reader `
   -ResourceName $gallery.Name `
   -ResourceType Microsoft.Compute/galleries `
   -ResourceGroupName $resourceGroup.ResourceGroupName

Pulire le risorse

Quando non è più necessario, è possibile usare il cmdlet Remove-AzResourceGroup per rimuovere il gruppo di risorse e tutte le risorse correlate:

# Delete the gallery 
Remove-AzResourceGroup -Name myGalleryRG

# Delete the scale set resource group
Remove-AzResourceGroup -Name myResoureceGroup

Passaggi successivi

In questa esercitazione si è appreso come creare e usare un'immagine di macchina virtuale personalizzata per i set di scalabilità con Azure PowerShell:

  • Creare una Galleria di calcolo di Azure
  • Creare una definizione dell'immagine
  • Creare una versione di immagine
  • Creare un set di scalabilità da un'immagine
  • Condividere una raccolta di immagini

Passare all'esercitazione successiva per informazioni su come distribuire le applicazioni nel set di scalabilità.