リソース マネージャー (ARM) 環境で既存の VM を既存の可用性セットに追加する方法

a-wataka

こんにちは、Azure サポートチームの高橋です。

本日は、ARM 環境にて可用性セットに参加していない既存の VM を、既存の可用性セットに追加する手順をご案内します。

新しく可用性セットを作成し、 VM を追加する場合には、以下のブログ記事にて手順をご紹介しておりますので、

ご参考いただけますと幸いです。

リソース マネージャー (ARM) 環境で既存の VM を新規作成の可用性セットに追加する方法

https://blogs.technet.microsoft.com/jpaztech/2016/06/07/addnewavsetvmarm/

本情報の内容(添付文書、リンク先などを含む)は、作成日時点でのものであり、予告なく変更される場合があります。

※ 2016/10/6 ”注意事項” の内容につきまして、追記いたしました。

※ 2017/12/7  "注意事項"の内容につきまして、追記いたしました。

制限事項


リソース マネージャー (ARM) 環境の場合、既存の VM を新規の可用性セットに追加する為には、以下の制限がございます。

 

注意事項


10/6 変更箇所

2017/12/7 追記

$vm.StorageProfile.OSDisk.Name = $vmName

作業の流れ


本記事では、例として以下の環境にて、サンプルの仮想マシン 名称 : [SetVmB] を既存の可用性セット 名称 : [setavaset] に追加するシナリオで、手順をご紹介させていただきます。

 

以下の作業は、すべて Azure PowerShell で行います。スクリプトを実行しますと、ポップアップ画面が出ますので、任意の名称を選択し、進めていきます。

  1. ログイン
  2. 既存のリソースの情報を取得
  3. 既存の可用性セットの情報を取得
  4. 既存の VM を停止、削除
  5. VM の設定を再定義、既存の可用性セットに追加
  6. VM の再デプロイ

 

手順


 

#Login

Login-AzureRmAccount

#Select Azure Subscription

$subscriptionId = (Get-AzureRmSubscription | Out-GridView -Title "Select an Azure Subscription ..." -PassThru).SubscriptionId

Select-AzureRmSubscription -SubscriptionId $subscriptionId

#Select Azure Resource Group in which existing VNET is provisioned

$rgName = (Get-AzureRmResourceGroup | Out-GridView -Title "Select an Azure Resource Group ..." -PassThru).ResourceGroupName

#Select VM to re-provision

$vmName = (Get-AzureRmVm -ResourceGroupName $rgName).Name | Out-GridView -Title "Select a VM ..." -PassThru

$vm = Get-AzureRmVm -ResourceGroupName $rgName -Name $vmName

$location = $vm.Location

#Get Azure availability set

$asname = (Get-AzureRmAvailabilitySet -ResourceGroupName $rgName).Name | Out-GridView -Title "Select a AvailabilitySet ..." -PassThru

#Stop and Deprovision existing Azure VM, retaining Disks

$vm | Stop-AzureRmVm -Force

$vm | Remove-AzureRmVm -Force

#Set VM config to include Availability Set

$as = Get-AzureRmAvailabilitySet -Name $asName -ResourceGroupName $rgName

$asRef = New-Object Microsoft.Azure.Management.Compute.Models.SubResource

$asRef.Id = $as.Id

$vm.AvailabilitySetReference = $asRef.Id # To remove VM from Availability Set, set to $null

#Clean-up VM config to reflect deployment from attached disks

$vm.StorageProfile.OSDisk.Name = $vmName

$vm.StorageProfile.OSDisk.CreateOption = "Attach"

$vm.StorageProfile.DataDisks | ForEach-Object { $_.CreateOption = "Attach" }

$vm.StorageProfile.ImageReference = $null

$vm.OSProfile = $null

#Re-provision VM from attached disks

$vm | New-AzureRmVm -ResourceGroupName $rgName -Location $location

 

sub

 

rg

 

VM

 

set

 

 

 

 

 

 

 

 

 

 

 

 

 

 

avaset2

 

以上が、 既存の VM を既存の可用性セットに追加する手順となります。