Azure リソースをコマンドラインで管理するためのツールの 1 つとして Azure PowerShell が使われますが、ARM ベースのモジュールとしてリリースされた AzureRM モジュールの後継として、2018/12/18 (現地時間) に Az モジュールがリリースされました。
この AzureRM モジュールと Az モジュールは Windows OS 標準として利用可能な Windows PowerShell 上に強制的にインストールさせることは可能ですが、サポートされていません。
AzureRM モジュールと Az モジュールがインストールされた Windows PowerShell 上で両方のモジュールをインポートしようとすると、以下のとおりエラーとなり、共存させることはできません。
AzureRM モジュールについて、サポート期限は「2024/02/29」であり、後継の Az モジュールが出ている以上、新機能の追加は望めないため、スクリプトなど Az モジュールへの移行を推奨しています。
ただ、様々な理由 (Enable-AzureRmAlias を用いてもうまく動作しない、など) で既存のスクリプトは AzureRM モジュール ベースで引き続き実行、新規作成するスクリプトは Az モジュール ベースを実行、といった感じで併用したいケースもあるかと思います。
共存する方法がないかどうかを確認した結果、方法としてはあったので、まとめてみました。
Azure PowerShell の AzureRM モジュールと Az モジュールを共存させる方法
上記のとおり、Windows PowerShell 上には AzureRM モジュールと Az モジュールを同時にインポートすることはできませんが、別途 PowerShell 7.0.6 LTS、もしくは PowerShell 7.1.3 以降をインストール、インポートすることで、共存することは可能となります。
※最新版は v7.1.4 (2021/10/05 時点)
つまりは以下のように構成することで、1 台の PC 上で AzureRM モジュールと Az モジュールを共存して実行することが可能です。
- Windows OS 標準の PowerShell (Windows PowerShell)
- AzureRM モジュールをインストール、インポート
- 別途インストールした PowerShell (PowerShell 7.0.6 LTS、もしくは PowerShell 7.1.3 以降)
- Az モジュールをインストール、インポート
各 PowerShell 環境におけるモジュールのインストール、インポート結果
それぞれの PowerShell 環境にインストールしたモジュールはそれぞれ別の場所にインストールされているため、Get-InstalledModule を実行しても他の PowerShell 環境にインストールされたモジュールは認識されません。
モジュールのインポートに関しても、それぞれの環境でインストールされているモジュールをインポートしているため、共存することが可能となっています。
- Windows OS 標準の PowerShell (Windows PowerShell)
- 別途インストールした PowerShell (PowerShell 7.0.6 LTS、もしくは PowerShell 7.1.3 以降)
まとめ
まとめるとこんな感じ。
別途 PowerShell 7.0.6 LTS、もしくは PowerShell 7.1.3 以降をインストール、Windows OS 標準の Windows PowerShell とともに使用することで AzureRM モジュールと Az モジュールの共存は可能。
ただし、現在は AzureRM モジュールのすべての機能は Az モジュールに搭載されているため、サポート期限までの移行を推奨します。
コメント