読者です 読者をやめる 読者になる 読者になる

銀の光と碧い空

クラウドなインフラとC#なアプリ開発の狭間にいるエンジニアの日々

Azure PowerShell を Linux で使う (Preview版)

PowerShell が Open SourceになってLinuxでも動くようになりました。

blogs.msdn.microsoft.com

Azure をLinux中心の環境で使っている場合、ポータルからではできなかったりスクリプトとして実行したい操作があると xplat Azure CLIを使っていたのですが、Azure PowerShellにはあるのに xplat Azure CLIにはないコマンドがあったり、シェルスクリプトよりはPowerShellをかきたい*1ので、早速Azure PowerShellを使おうと思っていました。ただ、Azure PowerShellは内部で.NET FrameworkでビルドしたC#コードを利用しており、.NET Coreに置き換えないと動かないという問題がありました。

github.com

まだ移行途中の模様ですが、Preview版が公開されたので早速.NET Core on RHEL を入れた環境で動かすことにしました。

まず、PowerShell on Linuxをインストールします。CentOS向けのrpmをダウンロードしてインストールします。

github.com

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

インストール手順はこのデモスクリプトの中に書いてあります。

github.com

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のセッションを抜けるたびに認証情報が消えるので、毎回ログインしなおす必要があります。対策はこちらの方法しかなさそうです。

blogs.technet.microsoft.com

というわけで Azure PowerShell が Linuxでも使えるようになりました。

*1:個人の感想です