Microsoft は、同社のスクリプトおよび自動化プラットフォームである PowerShell を、寛容な MIT ライセンスの下でオープンソースとして公開し、Linux および Mac に移植して、現在 GitHub でアルファ ビルドが利用可能になっています。
PowerShellはMicrosoftの.NETプラットフォーム上に構築されており、その基盤の一つがクロスプラットフォームで動作する.NETのリファクタリングされたフォークである.NET Coreです。PowerShellの「Core」は既にWindows Server 2016のベアボーンエディションであるNano Serverに搭載されており、今回発表されたリリースはMacとLinuxの.NET Core上で動作します。
当初のLinuxサポートは、Ubuntu、CentOS、RedHatです。「他のOSも追随する予定です」と、MicrosoftのテクニカルフェローでありPowerShellの開発者でもあるジェフリー・スノーバー氏はThe Regの取材に答えました。「そして、PowerShellをオープンソース化します。これはPowerShell Windowsのソースコードで、完全なCLRとPowerShell Coreで動作するバージョンです。」
もう1つの重要な発表は、SSHプロトコルを用いたリモートログインを可能にするOpenSSHがPowerShellに統合されることです。「OpenSSHをPowerShellの中核に組み込みます」とSnover氏は述べています。「PowerShellリモートプロトコルをOpenSSH上にネイティブトランスポートとして実装します。お客様は既存のWinRMプロトコルかOpenSSHのいずれかを選択できるようになります。」
Microsoftは、クロスプラットフォーム対応のPowerShell編集・デバッグツールも提供します。Windows ISE(統合スクリプト環境)の移植ではなく、クロスプラットフォーム対応のVisual Studio Codeやその他のエディターにプラグインできるPowerShellエディターサービスを開発しました。
「まずはVisual Studio CodeとSublimeをサポートします」とSnover氏は述べた。「その後、EmacsとVIMを中心に、他のエディタもサポートしていく予定です。」
単なるLinuxシェル
Linux版PowerShellは他のユーティリティの代替ではなく、それらと連携して動作します。「Linuxでは、PowerShellは単なるシェルの一つです」とスノーバー氏は言います。「今日では、awk、grep、sedなど、好きなシェルを使って実行できます。私たちは、まさにそれらのツールを使って、まさにそれらの機能を実現できるようになるのです。」
「Linuxは、REST APIやJSONドキュメントを生成するコマンドを通じて、構造化データとして公開されることがますます増えています。まさにそこが私たちの強みです。」
マイクロソフトは、一般的に使用されているツールのラッパー関数の作成も奨励しています。「デモの一つはCronのラッパーです」とスノーバー氏は述べました。「CrontabはASCIIテキストファイルで、正しい数のカンマと値を入力する必要がります。そこで、New-Cronjobというコマンドレットを用意しました。」このコマンドレットは、新しいジョブを受け入れる前にエラーチェックを行います。また、Get-Cronjobを使って既存のジョブを取得することもできます。「テキストを解析し、操作しやすいオブジェクトに変換します。これには大きな価値があると考えています」とスノーバー氏は述べました。
自社製品用のPowerShellライブラリを持つベンダーは、それらを新しいCoreバージョンに移植することが可能です。AWS(Amazon Web Services)とVMwareは、その初期の例として挙げられます。AWSのソフトウェア開発エンジニアであるSteve Roberts氏は、Mac上で動作するAWS Tools for PowerShellを実演しました。また、VMwareのAlan Renouf氏は、vSphere PowerCLIを使用して同様のデモを行いました。「vCenter管理のあらゆる側面を管理できるコマンドは既に用意しています」とRenouf氏は述べています。
ExchangeやExchange OnlineなどのWindows製品をMacやLinuxから管理するにはどうすればいいのでしょうか? Exchangeチームはまだコマンドレット(PowerShellコマンド)の移植に着手していないとスノーバー氏は言いますが、PowerShellリモート処理を使えば可能です。「入力して実行するコマンドをプロキシすれば、リモートマシン上で実行されます。どこからでもすべてを管理できるようになります」とスノーバー氏は説明しました。
「Azure 上の VM の 3 分の 1 近くが Linux です」
Azureクラウドのおかげで、Microsoftは現在、膨大な数のLinux仮想サーバーを運用しています。「Azure上のVMのほぼ3分の1はLinuxです」とSnover氏は述べていますが、これらのVMはMicrosoftのHyper-Vハイパーバイザー上で稼働しています。MicrosoftのPowerShellイニシアチブは、異機種混在サーバー管理の効率化に向けた取り組みの一環です。System Centerをクラウドホスト型VM管理機能で拡張する同社のOperations Management Suiteは、自動化機能にPowerShellを使用しており、Linux版PowerShellは、Azure、AWS、Google Cloud、オンプレミスなど、複数の環境で動作するインフラストラクチャを提供します。
MicrosoftのLinuxサポートはWindows Serverの魅力を損なっているのだろうか?Windows Serverのアーキテクトも務めるスノーバー氏は、私がAWSで何度も耳にしてきたことと似たような答えを返してくれた。「それはサティア(ナデラ)氏のリーダーシップに由来しています。彼は『顧客と対話し、顧客がどこにいるのかを知りなさい』と言っていました。顧客の成功を支援すれば、私たちも繁栄できると確信しています。顧客に選択肢があるという事実こそが、彼らが現状維持を続ける理由の一つなのです。」
Microsoft テクニカル フェローであり PowerShell の発明者である Jeffrey Snover 氏
PowerShellは、価値あるブリッジテクノロジーであることが証明されています。ChefやPuppetといったDevOpsや自動化の専門家は、LinuxベースのツールをWindowsに移植するためにPowerShellを利用しており、Microsoftも今後はWindows管理者によるLinux管理を支援するためにPowerShellを使用する予定です。また、その逆も同様です。
重要な注意点は、このツールはまだ完成には程遠いということです。Snover氏によると、初期のアルファ版にはOpenSSHのサポートすらありません。これは別のブランチにあり、「数か月以内に」正式リリースに統合される予定です。
彼はまた、アルファ版と最終的な製品版の間には変更点があることを警告し、それがアルファ版の目的だと述べています。本番版はいつリリースされるのでしょうか?「Microsoftの正式版のリリース時期は、コミュニティからの意見とビジネスニーズに基づいて決定されます」とプレスリリースには記されています。®