PowerShell が Open SourceになってLinuxでも動くようになりました。
Azure をLinux中心の環境で使っている場合、ポータルからではできなかったりスクリプトとして実行したい操作があると xplat Azure CLIを使っていたのですが、Azure PowerShellにはあるのに xplat Azure CLIにはないコマンドがあったり、シェルスクリプトよりはPowerShellをかきたい*1ので、早速Azure PowerShellを使おうと思っていました。ただ、Azure PowerShellは内部で.NET FrameworkでビルドしたC#コードを利用しており、.NET Coreに置き換えないと動かないという問題がありました。
まだ移行途中の模様ですが、Preview版が公開されたので早速.NET Core on RHEL を入れた環境で動かすことにしました。
まず、PowerShell on Linuxをインストールします。CentOS向けのrpmをダウンロードしてインストールします。
URLは適宜最新のリリースに置き換えてください。
# wget https://github.com/PowerShell/PowerShell/releases/download/v6.0.0-alpha.9/powershell-6.0.0_alpha.9-1.el7.centos.x86_64.rpm # yum localinstall powershell-6.0.0_alpha.9-1.el7.centos.x86_64.rpm
手元の環境で試したところ、Fedora24でもrpm自体はインストールできるのですが、実行時に.NET Coreに依存するためエラーが出ます。Fedora24向けの.NET Coreのバイナリが公開されるか、 ビルド手順が公開されるのを待ちましょう。
PowerShellがインストールできたら、AzureRMのモジュールをインストールします。モジュールのダウンロード先を確かめておきましょう。今回はユーザーごとのディレクトリに保存することにしました。
$ powershell PS /home/user1> $env:PSMODULEPATH /home/user1/.local/share/powershell/Modules:/usr/local/share/powershell/Modules:/opt/microsoft/powershell/6.0.0-alpha.9/Modules
インストール手順はこのデモスクリプトの中に書いてあります。
PS /home/user1> Install-Package -Name AzureRM.NetCore.Preview -Source https://www.powershellgallery.com/api/v2 -ProviderName NuGet -ExcludeVersion -Destination /home/user1/.local/share/powershell/Modules PS /home/user1> Import-Module AzureRM.NetCore.Preview PS /home/user1> Login-AzureRMAccount VERBOSE: To sign in, use a web browser to open the page https://aka.ms/devicelogin. Enter the code AAAAAAAAA to authenticate.
あとはブラウザを開いて、表示されたコードを入力すればログインできます。ただし、powershellのセッションを抜けるたびに認証情報が消えるので、毎回ログインしなおす必要があります。対策はこちらの方法しかなさそうです。
というわけで Azure PowerShell が Linuxでも使えるようになりました。
*1:個人の感想です