【Azure】VMSS内のVMインスタンスをPowerShellから参照・操作する方法

概要

Virtual Machine Scale Sets (以下、VMSS) 内の Virtual Machine (以下、VM) インスタンスのステータスを取得したり、電源状態の操作を自動化したかったので、 Azure PowerShell コマンドレットで VM インスタンスの参照・操作(起動・変更・停止・削除)する方法を調査してまとめました。

前提条件として、 Azure PowerShell が必要なので、なければこちらのサイトを参考にインストールしてください。

参考:Azure PowerShell をインストールする | Microsoft Docs

Azure へサインイン

Azure PowerShell を使用して作業を開始するためにまずは、 Azure の資格情報を使用してサインインが必要です。

下記のコマンドを実行すると、ブラウザで認証画面が表示されるのでサインインします。

Connect-AzAccount

PowerShell を使用して VMSS を操作する方法

VMSS の情報を取得

VMSSに関する全体的な情報を取得するには、下記のコマンドを実行します。

Get-AzVmss -ResourceGroupName "YourResourceGroup" -VMScaleSetName "YourScaleSet"

VMSS の VM インスタンスを表示

VMSS 内の VM インスタンスの一覧を取得するには、下記のコマンドを実行します。

Get-AzVmssVM -ResourceGroupName "YourResourceGroup" -VMScaleSetName "YourScaleSet"

特定の VM インスタンスを指定して追加情報を取得するには、-InstanceIdパラメータを追加してインスタンス ID を指定します。
たとえば、"0"を指定すると VMSS 内の VM インスタンス 0 に関する情報を取得します。

Get-AzVmssVM -ResourceGroupName "YourResourceGroup" -VMScaleSetName "YourScaleSet" -InstanceId "0"

また、-InstanceViewパラメータを追加することで、詳細なインスタンスビュー情報を取得することもできます。

Get-AzVmssVM -InstanceView -ResourceGroupName "YourResourceGroup" -VMScaleSetName "YourScaleSet"

VMSS の容量を変更

VMSS 内の VM インスタンスの数を増やす or 減らすために、下記のコマンドで容量を変更することができます。

# Get current scale set
$vmss = Get-AzVmss -ResourceGroupName "YourResourceGroup" -VMScaleSetName "YourScaleSet"

# Set and update the capacity of your scale set
$vmss.sku.capacity = 5
Update-AzVmss -ResourceGroupName "YourResourceGroup" -Name "YourScaleSet" -VirtualMachineScaleSet $vmss

VMSS の容量を減らした場合は、最も大きなインスタンス ID を持つ VM インスタンスが最初に削除されます。

VMSS 内の VM インスタンスの停止

VMSS 内の 1 つ以上の VM インスタンスを起動および停止させるには、下記のコマンドを実行します。

-InstanceIdパラメータでは、停止する VM インスタンスを 1 つ以上指定できます。複数の VM インスタンスを指定するには、各インスタンス ID をコンマで区切ります。

また、インスタンス ID を指定しない場合は、VMSS内のすべての VM インスタンスが停止されます。

Stop-AzVmss -ResourceGroupName "YourResourceGroup" -VMScaleSetName "YourScaleSet" -InstanceId "0"

既定では、このコマンドで停止された VM インスタンスは「割り当て解除済み」となるので、コンピューティング料金は発生しません。

停止された VM インスタンスをプロビジョニングされた状態のままにする場合は、-StayProvisionedパラメータを追加して下さい。ただしこの場合は、ハードウェアが VM に割り当てられたままとなるので、通常のコンピューティング料金が発生します。

VMSS 内の VM インスタンスの起動

VMSS 内の 1 つ以上の VM を起動するには、下記のコマンドを実行します。

-InstanceIdパラメーターでは、起動する VM インスタンスを 1 つ以上指定できます。複数の VM インスタンスを起動するには、各インスタンス ID をコンマで区切ります。

また、インスタンス ID を指定しない場合は、VMSS 内のすべての VM インスタンスが起動されます。

Start-AzVmss -ResourceGroupName "myResourceGroup" -VMScaleSetName "myScaleSet" -InstanceId "0"

VMSS から VM インスタンスを削除

VMSS 内の 1 つ以上の VM を削除するには、下記のコマンドを実行します。

-InstanceIdパラメーターでは、削除する VM インスタンスを 1 つ以上指定できます。複数の VM インスタンスを削除するには、各インスタンス ID をコンマで区切ります。

インスタンス ID を指定しない場合は、VMSS 内のすべての VM インスタンスが削除されます。

Remove-AzVmss -ResourceGroupName "myResourceGroup" -VMScaleSetName "myScaleSet" -InstanceId "0"

おわりに

業務内容によっては非常に多くの VM を取り扱うこともありますので、いちいち Azure ポータルからはとても管理できません。

かんたんな操作は PowerShell で自動化してしまいましょう。

さいごに、参考にしたサイトのリンクを掲載しておきます。

参考:Azure PowerShell を使用して仮想マシン スケール セットを管理する | Microsoft Docs

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

CAPTCHA