Azure コマンドラインツールについて( Azure CLI/ Azure PowerShell /Azure Cloud Shell)

# 概要

本記事では Azure コマンドラインツールについてまとめます。

Azureには下記 2 種類のコマンドラインツールがあります。

* Azure CLI
* Azure PowerShell

本記事ではその違いについてまとめていきます。

# コマンドラインツールとは

そもそもコマンドラインツールとは、マウスでの操作を基本としたインターフェース＝ GUI を使用せず、キーボード操作のインターフェース＝CUIにて操作を行うためのツールです。

1度のみの操作である場合、GUI のほが直観的でわかりやすいです。
一方繰り返し操作するような場合、CUI であればコピペできたり、スクリプトを作成し自動化することができるなどのメリットがあります。

Azure を管理していく場合、同じ作業を繰り返す場合が多々発生しますので、コマンドラインツールをつかうことで作業の効率アップを図れます。

またAzureのリソース情報を一括で取得したいといった場合にも、コマンドラインツールを活用しますと GUI で取得するよりも容易に情報を取得できます。


# 比較表
以下Azure CLI と Azure  PowerShell の比較表となります。

| 機能                        | Azure CLI                                      | Azure PowerShell                                                         | 
| --------------------------- | ---------------------------------------------- | ------------------------------------------------------------------------ | 
| 対応OS                      | Windows、macOS、Linux                          | Windows、macOS、Linux                                                    | 
| ベースとなるテクノロジー    | Pythonベース                                   | .NETベース                                                               | 
| Azure Cloud Shellで利用可能 | はい                                           | はい                                                                     | 
| 実行可能なシェル            | Cmd、Bash、 PowerShell 、 Windows  PowerShell  | PowerShell 、 Windows  PowerShell                                        | 
| 主要言語                    | Bashライクなコマンド                           | PowerShellコマンドレット                                                 | 
| インストール方法            | MSIインストーラー、winget、zip                 | PowerShell ギャラリー、MSIインストーラ（  Windows PowerShell 5.1に限る） | 
| 適している用途              | Linux/macOSユーザー、Bashスクリプト作成者      | Windows管理者、PowerShellの専門家    

実際にツールを使ってできる内容については差がありませんので、どちらのツールを使っていただいても支障はありません。

ご自身が慣れ親しんでいる言語により選択をしてください。
なお、Azure　CLIのほうが使用できるシェルが多いため、特に慣れ親しんでいる言語がないのであれば、Azure CLI を選択いただくのが良いかと思います。

なお、下記の公開情報にて選択する際の指針がまとめられております。

 [適切な Azure コマンド ライン ツールを選択する - Azure CLI | Microsoft Learn](https://learn.microsoft.com/ja-jp/cli/azure/choose-the-right-azure-command-line-tool)

# インストール方法

下記公開情報にまとめられていますので、環境や要件に応じて適宜手段を選んでください。

 [Azure CLI をインストールする方法 | Microsoft Learn](https://learn.microsoft.com/ja-jp/cli/azure/install-azure-cli)

 [Azure PowerShell をインストールする方法 | Microsoft Learn](https://learn.microsoft.com/ja-jp/powershell/azure/install-azure-powershell?view=azps-12.2.0)

 なお、非常にレアなケースかと思いますが、winget で Azure CLI をインストールする際には公開情報ベースだとうまくいかない場合があります。

winget で Azure CLI をインストールされる際には下記を参考にしてください。

 [wingetでアプリケーションインストール時に0x8a15000fエラーが発生しアプリケーションのインストールができない #Windows10 - Qiita](https://qiita.com/valpasucucci43/private/a9f27e4c7c87fd9fd0e8)

# Azure Cloud Shellについて

前項までに記載したようにAzure CLI、Azure PowerShell はともにインストールが必要です。
しかしながら、Azure Cloud Shellを使用しますと事前に双方のツールがインストールされておりすぐに利用ができます。

手順としてはブラウザで Azure Portal へサインインし下記のアイコンをクリックです。

![スクリーンショット 2024-09-02 165332.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1833876/a3523340-c16e-ea4e-ea17-166b9921a7dd.png)


詳細な設定については下記の公開情報をご確認ください。

 [Azure Cloud Shell とは | Microsoft Learn](https://learn.microsoft.com/ja-jp/azure/cloud-shell/overview)

なお、以前はストレージアカウントが必須でしたが、2024年5月の更新よりエフェメラル セッション（一時セッション）が利用可能となり、ストレージアカウントを用意せず利用できるようになっております。

 [Azure Cloud Shell エフェメラル セッションの概要 | Microsoft Learn](https://learn.microsoft.com/ja-jp/azure/cloud-shell/get-started/ephemeral?tabs=azurecli)

 なお、比較表に記載したように、Azure PowerShell は利用できるシェルが PowerShell となりますので、Azure Cloud Shell を利用する際に PowerShell を選択する必要があります。
 Azure CLI についてはBash、 PowerShell のいずれでも利用が可能です。

また Windows で Azure Cloud Shell にコマンドを張り付ける際のショートカットキーは Ctrl+C ではなく Shift+Insert となりますのでご注意ください。

 [Azure Cloud Shell ウィンドウの使用 | Microsoft Learn](https://learn.microsoft.com/ja-jp/azure/cloud-shell/using-the-shell-window#copy-and-paste)
 ※ 新しい UIでも変わらずです。

# 最後に

コマンドラインツールの利用は必須ではないですが、活用するで効率アップにつながる場面が多々ありますので適宜ご活用いただければと思います。

# kubectl のインストール
2024 年 9 月 9 日 追記

Azureリソース全般のコマンドツールではないですが、[Azure Kubernetes Service] を使用する際に頻繁に利用される kbectrl について補足します。

といっても Azure CLI がいストールされた環境で az aks install-cli コマンドを実行するだけです。

 [az aks | Microsoft Learn](https://learn.microsoft.com/ja-jp/cli/azure/aks?view=azure-cli-latest#az-aks-install-cli)

# Microsoft Graph PowerShell SDK のインストール
2024 年 9 月 22 日 追記

Entra ID の管理操作 は Azure CLI や Azure PowerShell ではできません。
Entra ID の管理をコマンドツールで操作を行う場合は、下記の公開情報に従い、Install-Module Microsoft.Graph コマンドレットを使い、Microsoft Graph PowerShell SDK をインストールします。

[Install the Microsoft Graph PowerShell SDK | Microsoft Learn](https://learn.microsoft.com/ja-jp/powershell/microsoftgraph/installation?view=graph-powershell-1.0)