こんにちは、 @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
に似てると思いました。慣れるにはこちらのサンプルを一通り試してみるとよいです。
-
Query command results with Azure CLI 2.0 | Microsoft Docs
- 基本的なサンプルたくさんのってるのでお勧めです!
サンプル集
リソースグループ内の仮想マシンの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
[].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
[].{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
[].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"
リンクまとめ
- Query command results with Azure CLI 2.0 | Microsoft Docs (前述の再掲)
-
Azure CLI を使用した Linux VM イメージの選択 | Microsoft Docs
- 例えば、CentOS の指定バージョンを選択したいときなど
Prologue - おわりに
余談ですが、なぜサンプル集つくったかというと、コピペしたいからです!(`・ω・´)ゝキリッ
思い付き次第、更新していきます~