クエリを使用して VM 情報を取得する
VM が作成されたので、その詳細情報を取得できます。 リソースから情報を取得するには、通常、show
コマンドを使用します。
az vm show --name $vmName --resource-group $resourceGroup
仮想マシンには、視覚的に解析するのが困難な多くのプロパティがあります。 返される JSON には、認証、ネットワーク インターフェイス、ストレージなどの情報が含まれています。 重要なのは、これに VM の接続先リソースの Azure オブジェクト ID が含まれていることです。 オブジェクト ID により、こうしたリソースに直接アクセスして、VM の構成と機能に関する詳細を取得できます。
オブジェクト ID を抽出するには、--query
引数が使用されます。 クエリは JMESPath クエリ言語で記述されます。まず、ネットワーク インターフェイス コントローラー (NIC) のオブジェクト ID を取得します。
az vm show --name $vmName \
--resource-group $resourceGroup \
--query 'networkProfile.networkInterfaces[].id' \
--output tsv
クエリを追加するだけで、ここでは多くのことが行われます。 それぞれの部分が出力 JSON のキーを参照するか、JMESPath 演算子になります。
networkProfile
はトップレベル JSON のキーで、networkInterfaces
がサブキーとして含まれます。 JSON 値がディクショナリの場合、そのキーは、.
演算子で親キーから参照されます。networkInterfaces
値は配列であるため、[]
演算子でフラット化されます。 この演算子は、各配列要素でクエリの残りの部分を実行します。 ここでは、すべての配列要素のid
値を取得します。
出力形式 tsv
(タブ区切り値) に含まれるのは、必ず結果データと、タブおよび改行文字で構成される空白文字だけになります。
返される値は修飾されていない 1 つの文字列であるため、シェル変数に直接割り当てても問題ありません。
Azure CLI 出力に対するクエリの詳細については、「JMESPath クエリを使用して Azure CLI コマンドの出力に対してクエリを実行する方法」を参照してください
ここで NIC オブジェクト ID をシェル変数に割り当てます。
nicId=$(az vm show \
-n $vmName \
-g $resourceGroup \
--query 'networkProfile.networkInterfaces[].id' \
-o tsv)
この例では、短い引数の使用も示しています。 --resource-group
の代わりに -g
を、--name
の代わりに -n
を、そして --output
の代わりに -o
を使用できます。
Azure CLI