편집

다음을 통해 공유


Azure PowerShell을 사용하여 VM에 대한 가용성 집합 변경

적용 대상: ✔️ Linux VM ✔️ Windows VM

다음 단계에서는 Azure PowerShell을 사용하여 VM(가상 머신)의 가용성 집합을 변경하는 방법을 설명합니다. VM을 만드는 경우에만 가용성 집합에 VM을 추가할 수 있습니다. 가용성 집합을 변경하려면 VM을 삭제한 다음 다시 만들어야 합니다.

이 문서는 Azure Cloud ShellAz PowerShell 모듈 버전 1.2.0을 사용하여 2019년 2월 12일에 마지막으로 테스트되었습니다.

Warning

이것은 단지 예일 뿐입니다. 경우에 따라 특정 배포에 맞게 업데이트해야 합니다.

디스크가 삭제 옵션으로 detach로 설정되어 있는지 확인합니다. VM이 delete설정된 경우 VM을 삭제하기 전에 VM을 업데이트합니다.

VM이 부하 분산 장치에 연결된 경우 해당 사례를 처리하도록 스크립트를 업데이트해야 합니다.

이 프로세스를 완료한 후 일부 확장을 다시 설치해야 할 수도 있습니다.

VM에서 하이브리드 혜택을 사용하는 경우 새 VM에서 하이브리드 혜택을 사용하도록 예제를 업데이트해야 합니다.

필수 조건

None

가용성 집합 변경

다음 스크립트는 필요한 정보를 수집하고 원래 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