Azure
cli
AzureCLI
MicrosoftAzure

はじめに

MicrosoftのクラウドプラットフォームMicrosoft Azureの操作をCLIで行うために提供されているコマンドラインツールAzure CLIについてのメモ。

  • Microsof Azure自体の解説は他に譲る。
  • 本記事で扱う対象はAzure CLI 2.0とする。
    • Azure CLI 2.0の実行コマンドはaz
    • Web上などでazureコマンドが紹介されているケースが散見されるが、これはすでに廃止されているAzure CLI 1.0での実行コマンドなので本記事では扱わない。
  • 本記事作成時はCentOS7で動作を確認している。

導入・設定

Azure CLIの導入

コマンドの実行結果の表示形式について

  • デフォルトの表示形式はJSON
    • 多くのサブコマンドでは--outputオプションでtabletsvjsonjsoncが選択可能になっている。
    • CLIでヒューマンリーダブルなのはtable、スクリプトなどで処理するときに便利なのはjsontsvといったところ。
    • 本記事では基本的に--output tableを指定している。
オプション 形式
--output table 表形式
--output tsv TSV(タブ区切りフォーマット)
--output json JSON
--output jsonc 色付きJSON
  • tabletsvで表示する際にはjsonで表示されるものと比べて表示項目が少ないことがある。
    • --output table--output tsvで表示する際に省略される項目については--queryオプションで明示的に指定することで、それぞれの表示形式でも出力出来る。
    • --queryオプションに指定するのは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

その他

参考

最後に

  • 誤りや更に便利な使い方があったら追記します。
  • Microsoftが公開しているドキュメントだけでなくコマンド自体にもヘルプや補完が充実してるので、色々試しているうちに理解が深まってくると思います。