はじめに
MicrosoftのクラウドプラットフォームMicrosoft Azureの操作をCLIで行うために提供されているコマンドラインツールAzure CLIについてのメモ。
- Microsof Azure自体の解説は他に譲る。
- 本記事で扱う対象はAzure CLI 2.0とする。
- Azure CLI 2.0の実行コマンドは
az
- Web上などで
azure
コマンドが紹介されているケースが散見されるが、これはすでに廃止されているAzure CLI 1.0での実行コマンドなので本記事では扱わない。
- Azure CLI 2.0の実行コマンドは
- 本記事作成時はCentOS7で動作を確認している。
導入・設定
Azure CLIの導入
- 導入方法については下記を参照
https://docs.microsoft.com/ja-jp/cli/azure/install-azure-cli?view=azure-cli-latest - Azure CLI 2.0は活発に開発が行われているので、yumやapt等アップデートが容易なパッケージ管理ソフト経由での導入がおすすめ。
- リリースノートは下記URLで公開されている。
https://docs.microsoft.com/ja-jp/cli/azure/release-notes-azure-cli?view=azure-cli-latest
コマンドの実行結果の表示形式について
- デフォルトの表示形式はJSON
- 多くのサブコマンドでは
--output
オプションでtable
、tsv
、json
、jsonc
が選択可能になっている。 - CLIでヒューマンリーダブルなのは
table
、スクリプトなどで処理するときに便利なのはjson
かtsv
といったところ。 - 本記事では基本的に
--output table
を指定している。
- 多くのサブコマンドでは
オプション | 形式 |
---|---|
--output table |
表形式 |
--output tsv |
TSV(タブ区切りフォーマット) |
--output json |
JSON |
--output jsonc |
色付きJSON |
--output yaml |
YAML |
--output yamlc |
色付きYAML |
--output none |
エラーと警告以外は出力しない |
-
table
やtsv
で表示する際にはjson
で表示されるものと比べて表示項目が少ないことがある。-
--output table
や--output tsv
で表示する際に省略される項目については--query
オプションで明示的に指定することで、それぞれの表示形式でも出力出来る。 -
--query
オプションに指定するのはJMESPath形式- JMESPathについては下記が参考になる。
http://jmespath.org/
https://qiita.com/futoase/items/320f408ae1cfff6dd6da
- JMESPathについては下記が参考になる。
-
プロキシー環境下での利用
- Azure CLIは各種APIと通信するため、プロキシー環境下では環境変数
HTTPS_PROXY
等でプロキシーを適切に設定したうえでaz
コマンドを実行する必要がある。
ログイン
az login
上記のコマンドを実行するとURLとコード文字列が表示される。
ブラウザでURLにアクセスしコード文字列を入力した後、有効なサブスクリプションを持つユーザーを選択もしくはログインする。
ログアウト
az logout
ログイン済みアカウントの確認
az account show
VM(VirtualMachine)
VM一覧を表示
az vm list --output table
- デフォルトの表示形式はJSONなので、jqコマンドで処理することもできる
az vm list | jq '.[] | .resourceGroup,.name'
VMに割り当てられたIPアドレスを調べる
--output table
でのデフォルトの表示
az vm list-ip-addresses --output table
--query
を使用した表示項目の選択
- ResourceGroupを同時に表示する。
az vm list-ip-addresses --query "[].virtualMachine.{resourceGroup:resourceGroup,VirtualMachine:name,PublicIPAddresses:network.publicIpAddresses[0].ipAddress,PrivateIPAddresses:network.privateIpAddresses[0]}" --output table
jq
コマンドを利用した表示項目の選択とCSV出力
az vm list-ip-addresses |jq -r '["resource group","VM","private IP address","public IP address"] , ( .[].virtualMachine | [ .resourceGroup,.name,.network.privateIpAddresses[],.network.publicIpAddresses[].ipAddress ] ) |@csv'
(Linuxの)VM上でコマンドを実行する
az vm run-command invoke --resource-group MyResourceGroup --name MyVm --command-id RunShellScript --scripts "echo hello"
VMを再起動する
az vm restart --resource-group MyResourceGroup --name MyVm
VMを停止する(コンピューティングの料金は引き続き発生)
az vm stop --resource-group MyResourceGroup --name MyVm
VMを停止する(割り当て解除)
az vm deallocate --resource-group MyResourceGroup --name MyVm
VMの利用可能なリソース量を一覧で表示
az vm list-usage --location <location> --output table
- MS Azureでは各種リソースに利用可能な上限が定められており、例えばCPUコア数の合計が一定数を超えるようなリソースの作成が制限される。
- 上記コマンドでは、VMに対して設定されている上限や利用済みの容量を表示する。
リソース
リソース一覧を表示
az resource list --output table
リソースグループ
リソースグループ一覧を表示
az group list --output table
すべてのリソースグループに対して、それぞれのリソースグループに属するリソースを丸ごと削除
- 実行ユーザーの権限で削除可能なリソースグループとそれに紐づいたリソースがすべて削除されるので要注意。
-
--no-wait
を指定しているので削除の終了を待たずにコマンドは終了する。
az group list |jq -r '.[].name' |while read RG; do az group delete --name "${RG}" --yes --no-wait; done
その他
- 最新機能が気になる場合はGitHub上のリポジトリをウォッチするのもおすすめです。
参考
- Microsoft Azure Cloud Computing Platform & Services
- Azure CLI 2.0 | Microsoft Docs
- Azure CLI 2.0 あれこれ 入門編 – Japan Azure Technical Support Engineers' Blog
最後に
- 誤りや更に便利な使い方があったら追記します。
- Microsoftが公開しているドキュメントだけでなくコマンド自体にもヘルプや補完が充実してるので、色々試しているうちに理解が深まってくると思います。