AzureCLIを利用して仮想マシンの状態を取得する方法をまとめてみました。
仮想マシンの状態は「az vm show」コマンドを利用して取得することが可能です。
この記事では実行するコマンドの例と、仮想マシンの状態の取得に必須となる [-d] オプションについても紹介していきます。
実行コマンド
早速実行していきますが、今回はインターフェースとしてpowershellを利用しています。
$status = az vm show -n "test-vm-001" -g "test-RG" -d | ConvertFrom-Json
$status.powerstate
「az vm show」コマンドを利用して特定の仮想マシンの情報を抜き出し、json形式で扱えるようにして「powerstate」という仮想マシンの状態が出力される項目を抜き出します。
「az vm show」コマンドの [-d] オプションは詳細な情報まで取得するオプションです。
これを指定しないと仮想マシンの状態が出力されません。
実行結果
PS C:\> $status = az vm show -n "test-vm-001" -g "test-RG" -d | ConvertFrom-Json
PS C:\> $status.powerstate
VM deallocated
PS C:\>
VMが起動していれば「VM running」と表示されます。
今回は停止しているため「VM deallocated」と表示されています。
[-d] オプションがないと仮想マシンの状態を取得できない
上記でも少し触れましたが、「az vm show」を利用する際に、[-d] オプションを利用しないと仮想マシンの状態を確認することができません。
[-d] オプションなしで同じコマンドを実行した結果
PS C:\> $status = az vm show -n "test-vm-001" -g "test-RG" | ConvertFrom-Json
PS C:\>
PS C:\> $status.powerstate
PS C:\>
このように何も出力されません。
[-d] オプションある/なしの出力結果を比較(一部抜粋)
出力結果のうち、項目である[plan]から[securityProfile]までの出力結果を比較してみました。
◆[-d] オプションあり の結果
"plan": null,
"platformFaultDomain": null,
"powerState": "VM deallocated",
"priority": null,
"privateIps": "10.0.0.4",
"provisioningState": "Succeeded",
"proximityPlacementGroup": null,
"publicIps": "",
"resourceGroup": "test-RG",
"resources": null,
"scheduledEventsProfile": null,
"securityProfile": null,
◆[-d] オプションなし の結果
"plan": null,
"platformFaultDomain": null,
"priority": null,
"provisioningState": "Succeeded",
"proximityPlacementGroup": null,
"resourceGroup": "test-RG",
"resources": null,
"scheduledEventsProfile": null,
"securityProfile": null,
「privateIps」「provisioningState」「publicIps」という3項目で差分があることがわかります。
[-d] オプションの差分項目
実際に出力結果の差分を調べたところ、以下の項目は [-d] オプションをつけないと取得できないようでした。
- fqdns
- macAddresses
- powerState
- privateIps
- publicIps