しばたテックブログ

PowerShellを中心に気分で書いている技術ブログです。

Azure PowerShellのAzモジュールについて

ちょっと公開が遅れましたが札幌 Azure もくもく会 4で調べた内容になります。

sapporoazuremok2.connpass.com

はじめに

以前のエントリで軽く触れたAzure PowerShellのAzモジュールですが、公式にアナウンスが発表されました。

blog.shibata.tech

クロスプラットフォームなAzモジュール

公式のアナウンスはコチラになります。

azure.microsoft.com

また、GitHub上で最新のアナウンス(https://aka.ms/azps-announce)もされていますのでこちらもご覧ください。

Azモジュールの機能

公式に以下の内容が表明されています。

  • Azモジュールは従来のAzureRMとAzureRM.Netcoreモジュールを置き換えるものである
  • AzモジュールはWindows PowerShell 5.1およびPowerShell Coreで動作する
  • (AzureRMに代わり)AzモジュールがAzureの最新機能に追従する
  • AzモジュールはCloud Shellで提供される*1
  • コマンドレットの名称を短く標準化し、全てのコマンドレットは"Az"プリフィックスを使用する
  • モジュール名を短く標準化し、各サービス向けのモジュールに共通して"Az"を付ける
  • AzモジュールではAzureRMとの互換性を確保する機能を提供する(Enable/Disable-AzureRmAlias)

以前にお知らせした内容と大して変わっていませんが、Windows PowerShell/PowerShell Core両方で動作するクロスプラットフォームなモジュールに切り替わり、同時に名称の標準化を図ったことが分かります。

対象プラットフォーム

Azモジュールは以下のプラットフォームで利用可能です。

  • PowerShell 5.1 (Windows 7以降で.Net Framework 4.7.2以降がインストールされたOS)
  • PowerShell Core 6.0 ~ 6.1 (全プラットフォーム)

リリースタイムライン

本エントリ公開時点では以下のスケジュールが予定されています。

年月 内容
2018年08月 初期リリース(Ver.0.1.0)
2018年11月(予定) AzureRMと同等の機能を提供
2018年12月(予定) AzureRMの新機能追加を最後にする

ざっくり今年中にAzをAzureRMと同等にして来年からはAzに切り替えていく見込みの様です。

こまかい進捗状況についてはGitHubのマイルストーンを見るのが良いでしょう。

利用方法

ざっくりと利用方法について説明します。
名前付けが変わったとはいえ従来のAzureRMとAzureRM.Netcoreモジュールの後継であるため基本的な使い方はこれまで通り変わりません。

インストール

現状PowerShell Galleryからインストール可能です。

www.powershellgallery.com

# PowerShell Galleryからモジュールをインストール
Install-Module -Name Az -Scope CurrentUser

Azure Cloud Shellでは初期状態でインストール済みのため何もせずに利用可能です。

また、具体的に明言されませんでしたが、MSIインストーラーは現在のところ提供されていないので今後も提供されないものと予想されます。

コマンドレット名の切り替え

前項でコマンドレット名が短くなるとお伝えしましたが、従来のモジュールとの互換性を確保するためにエイリアスを使用することができます。

Enable-AzureRmAliasで従来のコマンドレット名をエイリアスとして利用可能になり、Disable-AzureRmAliasでエイリアスを削除することができます。
エイリアスを有効にするモジュールを制限したい場合は-Moduleパラメーターを、設定を永続化したい場合は-Scopeパラメーターを使用することも可能です。

例えば、

Enable-AzureRmAlias -Scope CurrentUser

とした場合はプロファイルに以下の記述が追加され全てのモジュールに対する設定変更が永続化されます。

# 以下の記述がプロファイルに追記される

#Begin Azure PowerShell alias import
Import-Module Az.Profile -ErrorAction SilentlyContinue -ErrorVariable importError
if ($importerror.Count -eq 0) { 
    Enable-AzureRmAlias -Module Az.Aks, Az.AnalysisServices, Az.ApiManagement, Az.ApplicationInsights, Az.Automation, Az.Backup, Az.Batch, Az.Billing, Az.Cdn, Az.CognitiveServices, Az.Compute, Az.Compute.ManagedService, Az.Consumption, Az.ContainerInstance, Az.ContainerRegistry, Az.DataFactories, Az.DataFactoryV2, Az.DataLakeAnalytics, Az.DataLakeStore, Az.DataMigration, Az.DeviceProvisioningServices, Az.DevSpaces, Az.Dns, Az.EventGrid, Az.EventHub, Az.FrontDoor, Az.HDInsight, Az.Insights, Az.IotHub, Az.KeyVault, Az.LogicApp, Az.MachineLearning, Az.MachineLearningCompute, Az.ManagedServiceIdentity, Az.ManagementPartner, Az.Maps, Az.MarketplaceOrdering, Az.Media, Az.Network, Az.NotificationHubs, Az.OperationalInsights, Az.PolicyInsights, Az.PowerBIEmbedded, Az.Profile, Az.RecoveryServices, Az.RedisCache, Az.Relay, Az.Reservations, Az.ResourceGraph, Az.Resources, Az.Scheduler, Az.Search, Az.Security, Az.ServiceBus, Az.ServiceFabric, Az.SignalR, Az.Sql, Az.Storage, Az.StorageSync, Az.StreamAnalytics, Az.Subscription, Az.Tags, Az.TrafficManager, Az.UsageAggregates, Az.Websites -ErrorAction SilentlyContinue; 
}
#End Azure PowerShell alias import

逆に

Disable-AzureRmAlias -Scope CurrentUser

とすればプロファイルからこの記述が削除されます。

その他の操作

その他の操作は従来のモジュールと基本的に同じです。
例えばサインインであればConnect-AzureRmAccountConnect-AzAccountに変わるだけです。

# サインイン : Connect-AzureRmAccount -> Connect-AzAccount に変更
Connect-AzAccount

*1:すでに提供済み