Azureで単数NICの仮想マシンを複数NICにする
こんにちは、Azureサポートチームの三國です。
今回は、単数NICの仮想マシンを複数NICにする方法についてご案内します。
本情報の内容(添付文書、リンク先などを含む)は、作成日時点でのものであり、予告なく変更される場合があります。
はじめに
NICとは、ネットワークインターフェイスカードの略です。Azure Portalから仮想マシンを作成するときは単数NICがついている仮想マシンしか作成できないのですが、Azure PowerShellなどを使うことにより最初から複数のNICを持った仮想マシンを作成することができます。
最初から複数NICを持った仮想マシンを作成する方法は、下記のドキュメントをご覧ください。
複数の NIC を持つ Windows 仮想マシンの作成と管理
今回のテーマは、 「後からNICの数を複数にしたい!」 というケースです。
実は、2つのNICを持つ仮想マシンにもう1つNICを加えることは難しくありません。
本ブログにおいてこのケースは直接的には取り上げませんので、以下のドキュメントをご参照ください。
(なお、本ブログを読んでも方法については理解できるようになります)
それでは、早速中身に入りましょう。
単数NICの仮想マシンを複数NICにする
以下のPowerShellを用いてください。解説は後述します。
注意!! このスクリプトにより仮想マシンが停止(割り当て解除)されます。
注意!! このスクリプトでは新しいNICにNSGを割り当てません。割り当てたい場合はスクリプトをカスタマイズするか、NIC追加後にポータルより行ってください。
######################################################################
### ログインとサブスクリプション指定
######################################################################
Login-AzureRmAccount
$mySub = Get-AzureRmSubscription | Out-GridView -Title "Select an Azure Subscription ..." -PassThru
Select-AzureRmSubscription -SubscriptionId $mySub.Id
######################################################################
###基本情報を設定する
###なお、パブリックIPアドレスの割り当ては任意です
######################################################################
$resourceGroup = "リソースグループ名"
$location = "場所"
$vmName = "仮想マシン名"
$PublicIpAddressName = "パブリックIPアドレス名"
$dnsNameforPublicIp = "パブリックIPアドレスに紐づくDNS名"
$vNetName = "仮想マシンの所属するVnet名"
$newNicName = "新しいNIC名"
$vm = Get-AzureRmVM -name $vmName -ResourceGroupName $resourceGroup
######################################################################
###仮想マシンを停止する
######################################################################
stop-azurermvm -name $vmName -ResourceGroupName $resourceGroup
######################################################################
###パブリックIPアドレスを作成する
###パブリックIPアドレスが不要であればコメントアウトください。
######################################################################
$pip = New-AzureRmPublicIpAddress -AllocationMethod Dynamic `
-ResourceGroupName $resourceGroup -DomainNameLabel $dnsNameforPublicIp `
-IpAddressVersion IPv4 -Location $location -Name $PublicIpAddressName
######################################################################
###新NICを作成する
###パブリックIPアドレスの割り当ては任意です。不要であれば、
###-PublicIpAddressIdオプションをコメントアウトしてください。
######################################################################
$myVnet = Get-AzureRmVirtualNetwork -Name $vNetName -ResourceGroupName $resourceGroup
$mySubnet = Get-AzureRmVirtualNetworkSubnetConfig -VirtualNetwork $myVnet `
|Out-GridView -Title "Select an Azure Subnet ..." -PassThru
$newNic = New-AzureRmNetworkInterface -Location $location `
-Name $newNicName -ResourceGroupName $resourceGroup `
-SubnetId $mySubnet.Id -PublicIpAddressId $pip.id
######################################################################
###新NICを追加する
######################################################################
Add-AzureRmVMNetworkInterface -VM $vm -Id $newNic.Id
######################################################################
###プライマリNICを指定する
###本手順では既存のNICをプライマリにしていますが、新NICをプライマリに
###したい場合は以下のようにしてください
###$vm.NetworkProfile.NetworkInterfaces[1].Primary=$true
######################################################################
$vm.NetworkProfile.NetworkInterfaces[0].Primary=$true
######################################################################
###仮想マシン情報を更新する
######################################################################
Update-AzureRmVm -ResourceGroupName $resourceGroup -VM $vm
######################################################################
###仮想マシンを起動する
######################################################################
start-azurermvm -name $vmName -ResourceGroupName $resourceGroup
解説
NICを単数から複数にするうえで重要なのは、 "プライマリNIC" を指定するということです。
NICが単数の時はNICのパラメータに"プライマリ"という概念はありませんが、複数NICになると必要になります。
下記コマンドを単数NICの際と複数NICの際とでそれぞれ試してみるとご理解頂けるかと存じます。
(Get-AzureRmVM -name [仮想マシン名] -ResourceGroupName [リソースグループ名]).NetworkProfile.NetworkInterfaces
そのため、ただNICを追加するだけでなく、プライマリを指定してあげる必要があるのです。
最初から複数NICを持っている仮想マシンにNICを加えるときは、すでにプライマリNICが定められているため、NICの追加だけで十分です。
以上になります。
ご質問などありましたら、ぜひコメント欄へお願いします!
(その他、この記事を見に来た方に役立つかもしれないブログ)