Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Si applica a: ✔️ macchine virtuali Linux ✔️ macchine virtuali Windows
I passaggi seguenti descrivono come modificare il set di disponibilità di una macchina virtuale usando Azure PowerShell. È possibile aggiungere una macchina virtuale a un set di disponibilità solo quando si crea la macchina virtuale. Per modificare il set di disponibilità, è necessario eliminare e quindi ricreare la macchina virtuale.
Questo articolo è stato testato l'ultimo 12 febbraio 2019 usando Azure Cloud Shell e il modulo Az PowerShell versione 1.2.0.
Avviso
Questo è solo un esempio. In alcuni casi, è necessario aggiornarlo per la distribuzione specifica.
Assicurarsi che i dischi siano impostati su detach
come opzione di eliminazione . Se sono impostati su delete
, aggiornare le macchine virtuali prima di eliminare le macchine virtuali.
Se la macchina virtuale è collegata a un servizio di bilanciamento del carico, è necessario aggiornare lo script per gestire tale caso.
Alcune estensioni potrebbero anche essere reinstallate al termine del processo.
Se la macchina virtuale usa vantaggi ibridi, è necessario aggiornare l'esempio per abilitare i vantaggi ibridi nella nuova macchina virtuale.
Prerequisiti
Modificare il set di disponibilità
Lo script seguente fornisce un esempio di raccolta delle informazioni necessarie, l'eliminazione della macchina virtuale originale e la nuova creazione in un nuovo set di disponibilità:
# Set variables
$resourceGroup = "myResourceGroup"
$vmName = "myVM"
$newAvailSetName = "myAvailabilitySet"
# Get the details of the VM to be moved to the availability set
$originalVM = Get-AzVM `
-ResourceGroupName $resourceGroup `
-Name $vmName
# Create a new availability set if it doesn't exist
$availSet = Get-AzAvailabilitySet `
-ResourceGroupName $resourceGroup `
-Name $newAvailSetName `
-ErrorAction Ignore
if (-Not $availSet) {
$availSet = New-AzAvailabilitySet `
-Location $originalVM.Location `
-Name $newAvailSetName `
-ResourceGroupName $resourceGroup `
-PlatformFaultDomainCount 2 `
-PlatformUpdateDomainCount 2 `
-Sku Aligned
}
# Remove the original VM
Remove-AzVM -ResourceGroupName $resourceGroup -Name $vmName
# Create the basic configuration for the replacement VM.
$newVM = New-AzVMConfig `
-VMName $originalVM.Name `
-VMSize $originalVM.HardwareProfile.VmSize `
-AvailabilitySetId $availSet.Id
# For a Linux VM, change the last parameter from -Windows to -Linux
Set-AzVMOSDisk `
-VM $newVM -CreateOption Attach `
-ManagedDiskId $originalVM.StorageProfile.OsDisk.ManagedDisk.Id `
-Name $originalVM.StorageProfile.OsDisk.Name `
-Windows
# Add data disks
foreach ($disk in $originalVM.StorageProfile.DataDisks) {
Add-AzVMDataDisk -VM $newVM `
-Name $disk.Name `
-ManagedDiskId $disk.ManagedDisk.Id `
-Caching $disk.Caching `
-Lun $disk.Lun `
-DiskSizeInGB $disk.DiskSizeGB `
-CreateOption Attach
}
# Add NICs and keep the same NICs as primary; keep the private IP too, if it exists
foreach ($nic in $originalVM.NetworkProfile.NetworkInterfaces) {
if ($nic.Primary -eq "True")
{
Add-AzVMNetworkInterface `
-VM $newVM `
-Id $nic.Id -Primary
}
else
{
Add-AzVMNetworkInterface `
-VM $newVM `
-Id $nic.Id
}
}
# Re-create the VM
New-AzVM `
-ResourceGroupName $resourceGroup `
-Location $originalVM.Location `
-VM $newVM `
-DisableBginfoExtension