Check! Azure CLI 2.0 のフィルタクエリ (--query) サンプル集

  • 3
    いいね
  • 0
    コメント

こんにちは、エクストリームデザイン@dz_ こと大平かづみです。

Prologue - はじめに

Azure をバリバリ使う機会が増え、効率化を図るために CLI を導入しました!Azure CLI 2.0 です。

Azure CLI 2.0 のインストールについては、 Install the Azure CLI 2.0 | Microsoft Docs をご参照くださいませ。

Azure CLI 2.0 の --query について

--query は、JMESPath の記法を用いて出力結果を操作できるオプションです。感触としては jq に似てると思いました。慣れるにはこちらのサンプルを一通り試してみるとよいです。

サンプル集

リソースグループ内の仮想マシンのid一覧を取得して、複数指定を楽にする

az コマンドは --ids として複数のIDを指定することができるものがあります。

ID は名前と違って長くて覚えきれないので、 --query を使って一覧を取得しておくと便利です。-o tsv と組み合わせるいことで、コピペもしやすい!

以下はリソースグループ内の仮想マシンの ID 一覧を取得するコマンド例です。

$ az vm list -g yourResourceGroup --query "[].id" -o tsv

/subscriptions/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/resourceGroups/yourResourceGroup/providers/Microsoft.Compute/virtualMachines/vm001
/subscriptions/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/resourceGroups/yourResourceGroup/providers/Microsoft.Compute/virtualMachines/vm002
/subscriptions/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/resourceGroups/yourResourceGroup/providers/Microsoft.Compute/virtualMachines/vm003
--query
[].id

--ids に指定するときは、以下のようにスペース区切りで指定します。

$ az vm start --ids /subscriptions/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/resourceGroups/yourResourceGroup/providers/Microsoft.Compute/virtualMachines/vm001 /subscriptions/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/resourceGroups/yourResourceGroup/providers/Microsoft.Compute/virtualMachines/vm002 /subscriptions/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/resourceGroups/yourResourceGroup/providers/Microsoft.Compute/virtualMachines/vm003

仮想マシンの稼働状態を表示する

az vm get-instance-view で、仮想マシンの稼働状態を取得することができます。--query と組み合わせるとすっきり! --ids での指定も可能です。

$ az vm get-instance-view --query "[].{Name:name,PowerState:instanceView.statuses[1].displayStatus}" -o table -g yourResourceGroup -n yourVmName 

Name          PowerState
------------  --------------
yourVmName    VM deallocated
--query
[].{Name:name,PowerState:instanceView.statuses[1].displayStatus}

リソースグループ内の仮想マシンのIPアドレスを表示する

az vm list-ip-addresses で、IPアドレスの一覧を取得することができます。これも、--query-o table と組み合わせるとすっきり~

az vm list-ip-addresses --query "[].virtualMachine[].{Name:name, PublicIp:network.publicIpAddresses[0].ipAddress, PrivateIp:network.privateIpAddresses[0]}" -o table -g yourResourceGroup

Name    PrivateIp    PublicIp
------  -----------  --------------
vm001   192.168.0.4  52.170.213.177
vm002   192.168.0.5
--query
[].virtualMachine[].{Name:name, PublicIp:network.publicIpAddresses[0].ipAddress, PrivateIp:network.privateIpAddresses[0]}

おまけ

--query に関わらないけど便利な使い方をメモしておきます。

選べる出力形式が便利

前述のサンプル集でも利用していますが、どの az コマンドでも、 -o または --output オプションで出力形式を指定できます。

たとえば、単純に -o table を指定すると、そのコマンドの主要な情報を見やすい一覧にして表示してくれます。

$ az vm list-ip-addresses -g yourResourceGroup -o table

VirtualMachine     PrivateIPAddresses
-----------------  --------------------
vm001              192.168.0.4
vm002              192.168.0.5
vm003              192.168.0.6

--query と組み合わせて表組をカスタマイズすることもできます。

また、-o tsv でタブ区切りの形式で出力することもできます。

よく使うリソースグループをデフォルトとして登録しておく

何度も同じパラメータを使う場合は、 az configure が便利です。

例えば、リソースグループのデフォルト値を指定しておくには、以下のように指定します。

$ az configure --defaults "group=yourResourceGroup"

リンクまとめ

Prologue - おわりに

余談ですが、なぜサンプル集つくったかというと、コピペしたいからです!(`・ω・´)ゝキリッ

思い付き次第、更新していきます~