😀

同一 PC 内で Azure CLI の複数バージョンを利用するアイデア

に公開

背景と目的

Azure CLI をバージョンアップしていくと、昔書いた Azure CLI のコードが動かなくなるケースがあります。これは、Azure CLI のリリースノートで「破壊的変更」と書かれたコマンドがあり、そのバージョンからは以前の仕様で動作しなくなる事を意味します。ところが、Azure CLI は同一 PC 内に複数のバージョンをインストールする事ができません。しかしながら、少しの工夫で異なるバージョンの Azure CLI を実行する事が可能なので実際やってみました。

Python を使って複数バージョンの Azure CLI をインストール&実行

bash
$ python3 --version
Python 3.10.8

$ python3 -m venv azcli236

$ . azcli236/bin/activate

$ pip install azure-cli==2.36.0

$ az version
{
  "azure-cli": "2.36.0",
  "azure-cli-core": "2.36.0",
  "azure-cli-telemetry": "1.0.6",
  "extensions": {}
}

$ deactivate

$ python3 -m venv azcli237

$ . azcli237/bin/activate

$ pip install azure-cli==2.37.0

$ az version
{
  "azure-cli": "2.37.0",
  "azure-cli-core": "2.37.0",
  "azure-cli-telemetry": "1.0.6",
  "extensions": {}
}

$ deactivate

Docker を使って複数バージョンの Azure CLI を実行

bash
$ docker --version
Docker version 20.10.21, build baeda1f

$ docker run --name azcli236 -it mcr.microsoft.com/azure-cli:2.36.0

bash-5.1# az version
{
  "azure-cli": "2.36.0",
  "azure-cli-core": "2.36.0",
  "azure-cli-telemetry": "1.0.6",
  "extensions": {}
}

bash-5.1# exit

$ docker rm azcli236

$ docker run --name azcli237 -it mcr.microsoft.com/azure-cli:2.37.0

bash-5.1# az version
{
  "azure-cli": "2.37.0",
  "azure-cli-core": "2.37.0",
  "azure-cli-telemetry": "1.0.6",
  "extensions": {}
}

bash-5.1# exit

$ docker rm azcli237

参考

https://learn.microsoft.com/ja-jp/cli/azure/release-notes-azure-cli?toc=%2Fcli%2Fazure%2Ftoc.json&bc=%2Fcli%2Fazure%2Fbreadcrumb%2Ftoc.json#role-1

https://learn.microsoft.com/ja-jp/cli/azure/microsoft-graph-migration#breaking-changes

https://learn.microsoft.com/ja-jp/cli/azure/run-azure-cli-docker

Discussion