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

こんにちは、Azure サポートチームの三國です。
本日は、ARM 環境にて可用性セットに参加していない既存の VM (管理ディスク)を、既存の可用性セットに追加する手順をご案内します。
非管理ディスクの場合は以下のドキュメントをご参照ください。
リソース マネージャー (ARM) 環境で既存の VM を既存の可用性セットに追加する方法
https://blogs.technet.microsoft.com/jpaztech/2016/06/08/addavasetvmarm/

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

制限事項


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

  • 既存の VM を停止 / 削除して、再度 VM を展開する必要があります。ただし、その手順で VM のデータとなる VHD は残りますので、ゲスト OS が含まれる OS ディスクやデータ ディスクのデータがそのまま引き継げます。

注意事項


  • 非管理対象ディスクを用いる際との差は以下の2点です
  1. 可用性セットも管理ディスクである必要がある
  2. ポータルからも実施することができる
  • 以下にご案内する手順を実行いただきますと、VM が一度削除され、既存の可用性セット内に VM が再展開されます。
    ディスク内のデータが削除されるわけではございませんが、手順の中に VM の削除が伴いますので、検証環境にて充分お試しいただきますようお願いいたします。
  • ポータルから作業する場合は、ネットワークインターフェイスが変わります。
  • VM 名や ディスク名などが変更されることはございません。
  • 2017/12/7 時点では、以下の手順で VM を展開した場合、ポータル上の VM のコンピューター名が [ – ] と表示されますが、VMの挙動に影響はありません。(これは、既存の ディスク を元に VM を展開した際に発生しますが、今後改善される予定となっております。)
  • 拡張機能が一律、無効状態と認識されている可能性があります。事前の構成を把握していただき、適宜有効・無効を切り替えていただければと存じます。既に有効な拡張機能を、上から有効化しても問題はありません。
  • VM は、元々使用していたリソースを使い再展開されます。そのため、Azure 上のリソースに関しては、再度設定を行っていただく必要はございません。
  • 仮想マシン内部の設定につきましても、再設定していただく必要はなく、基本的には再作成する前の状態でお使いいただけます。
  • Azure としては、再作成前と同等の構成で再作成を行っておりますが、テンポラリー領域のご使用方法や、仮想マシン内の OS やアプリケーションの構成によっては、仮想マシン再作成後に設定が必要となる場合があります。VM の再作成後は、同等の構成にて再展開が行われていること、当該 VM  がホストする各サービスが正常に動作していることをご確認ください。

作業の流れ


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

  • リソース グループ名 : [Set-RG]
  • 可用性セット名 : [setavaset]
  • VM 名 : [SetVmA](可用性セットに追加済み)/ [SetVmB](可用性セットに追加されていない VM)

 

朗報です。管理ディスクでは、以下の作業をすべてポータルよりGUI操作でできるようになりました。以下の手順で進めていきます。

  1. 既存のリソースの情報を取得
  2. 既存の可用性セットの情報を取得
  3. 既存の VM を停止、削除
  4. 管理ディスクよりVM を作成
  5. VMの設定を再定義、既存の可用性セットに追加
  6. 可用性セットへの追加を確認

手順


(1) 既存のリソースの情報を取得

以下のように、引き継ぎたい情報を確認します。

-仮想マシンのサイズ

-仮想ネットワーク、サブネット名、ネットワークセキュリティグループ名

-ディスク名

-起動診断に用いるストレージアカウント名

 

(2) 既存の可用性セットの情報を取得

仮想マシンを追加したい可用性セット名を確認します。なお、管理ディスクで作成されている必要があるのでそれも確認しておきましょう。

 

(3) 既存の VM を停止、削除

-仮想マシンを削除します

(オプション) ネットワークインターフェイスの削除

パブリックIPアドレスを引き継ぎたい場合はネットワークインターフェイスを削除し、パブリックIPアドレスを開放します。なお、ネットワークインターフェイスは引き継げません。

 

(4) 管理ディスクよりVM を作成

-ディスクを選択し、仮想マシンの作成を開始します

 

(5) VMの設定を再定義、既存の可用性セットに追加

可用性セットを設定し、その他の設定を行います。ネットワークインターフェイスを削除していればパブリックIPアドレスも引き継げます

 

(6) 可用性セットへの追加を確認

以上が、ポータルを用いた手順となります

(補足) PowerShellを用いた手順


本手順は、PowerShellで行うことも可能でございます。

以下の Azure PowerShell スクリプトをテキスト エディターにコピーし、.ps1 形式にて保存し、実行します。特に PowerShell ファイル上でのパラメーターの変更や設定などはございませんので、以下のスクリプトをそのままコピーしてご実行いただけます。(仮想マシンや可用性セット名などは途中選択肢としてあらわれ、ポップアップ内で選択する形で指定します。)

 #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.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

 

  • ログイン後、新たなポップアップ画面が出ますので、サブスクリプション ID を選択し、 [OK] をクリックします。

sub

 

  • 同様にリソース グループを指定します。本シナリオでは、 [Set-RG] を選択し、 [OK] をクリックします。

rg

 

  • 既存の可用性セットに追加する VM を選択します。本シナリオでは、 [SetVmB] を選択し、 [OK] をクリックします。

VM

 

  • 既存の可用性セットを選択します。本シナリオでは、 [setavaset] を選択し、 [OK] を押します。

set

 

 

 

 

 

 

 

 

 

  • [SetVmB] が一旦削除され、元々使用していたリソースより再展開されます。
    既存の可用性セット [setavaset] に追加されたことをポータルより確認します 。

 

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