編集

次の方法で共有


Azure PowerShell を使用して VM の可用性セットを変更する

適用対象: ✔️ Linux VM ✔️ Windows VM

以下の手順では、Azure PowerShell を使用して仮想マシン (VM) の可用性セットを変更する方法について説明します。 VM は、VM を作成するときにのみ可用性セットに追加できます。 可用性セットを変更するには、VM を削除し、再作成する必要があります。

この記事が最後にテストされたのは 2019 年 2 月 12 日で、Azure Cloud ShellAz PowerShell モジュール バージョン 1.2.0 を使用しました。

警告

これは一例です。 場合によっては、特定のデプロイに合わせて更新する必要があります。

ディスクが削除オプションとして detach に設定されていることを確認します。 delete に設定されている場合は、VM を削除する前に VM を更新します。

VM がロード バランサーに接続されている場合は、そのケースを処理するようにスクリプトを更新する必要があります。

一部の拡張機能は、このプロセスを完了した後に再インストールすることが必要な場合があります。

VM でハイブリッド特典を使用する場合は、新しい VM でハイブリッド特典を有効にするために例を更新する必要があります。

前提条件

なし

可用性セットを変更する

次のスクリプトでは、必要な情報を収集し、元の VM を削除し、その VM を新しい可用性セット内に再作成する例を示します。

  # 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