先日2/Apr/2014 - 3日間のBuild 2014に合わせてWindows Management Framework 5.0*1 がPreviewリリースされました。
以前、 WMF4.0 の紹介で触れた通り、PowerShellはWMFに含まれており、 WMF5.0ではPowerShell 5.0が含まれます。
これまでも、 PowerShellはそのメジャーリリースに合わせて機能が追加されていきました。4.0ではDSCがその大きな目玉となった訳ですが、5.0ではさらに待ち望んでいた機能が加わります。
では早速見ていきましょう。
- WMF 5.0 に待ち望まれたものはなんのなか
- Windows Management Framework 5.0 での強化
- OneGet が可能にすること
- OneGetがこれまでのChocolatey と違う点
- OneGet コマンドレット
- 今後のOneGet
- OneGetの詳細
- Network Switches
- まとめ
WMF 5.0 に待ち望まれたものはなんのなか
WMF 4.0ではDSCという、Automation / Deploymentのためのツール/環境が提供されました。
MicrosoftはPowerShellを利用したAutomationに各ステージで移行しています。それはAzureしかり、SharePointしかりです。そこで、WMF 5.0を見る前に、今、Automationにおいて足りないものを考えるのはWMF 5.0で待ち望まれたものを考えるに材料となるでしょう。
Windows Automation にはインストーラがネック
私自身が、Automation, Deploymentをどうやればいいのか/どうしているのか/何が面倒か、と考えた時、真っ先に面倒ごととして上がるのがソフトウェアのインストールです。msi, msu, exeどれでも結構ですが、どれも自動インストールのためのインタフェースが別でやっかいです。
なので、一枚抽象化のラッパーをかませばとてもよろしいのですが、各自が自前で用意するのもナンセンスです。そう、現在主流な方法の1つとしてchocolateyがあるのですから。
chocolateyは私自身も過去に何度か取り上げていますが、よくいわれる表現が
- Chocolatey NuGet is a Machine Package Manager, somewhat like apt-get, but built with Windows in mind
とある通り、 Windowsでのapt-getです。
つまり、chocolateyを使うことで厄介だったソフトウェアインストールの自動化、ハンドルが容易になります。
- インストール手段の一元化
- 公開ソフトウェアが1700を超え活発である
- NuGetをベースにしており、ローカルリポジトリも可能
しかし、現状のchocolateyには問題もあります。
- cmdベースで処理のハンドリングが厄介
- コマンドが一元化されておらず、コマンドリファレンスが手放せない
これらは、外部コマンドなので仕方がない。といえばそうですが辛い点です。
DSC がまだパフォーマンス面で改善の余地がある
私自身が作ったvalentiaとDSC Pushでパフォーマンスを測定しても、DSCはまだまだ遅いです。
PowerShell Teamの視点が、Automationに向く中、これらの材料も視野に入れてPowerShell 5.0で強化されるポイントを考えてみましょう。
Windows Management Framework 5.0 での強化
それでは、発表を元に。
DSC Refresh
DSCは、cimの機能としてWindows Management Framework 4.0で追加されています。 PowerShellではconfigurationキーワードでこれをサポートしており、Push/Pull型でサーバーのあるべき状態を宣言的な構文でプログラマブルにしました。
Windows以外でなれている人にとっては、CHEFやPuppetを想像してもらえるといいでしょう。機能や操作は同一ではないものの、目指すconfiguration driftを防ぎ、宣言的な構文を持つという意味では目指している点は似通っています。
WMF5.0は、バグ修正とパフォーマンス向上がはかられており、先日のDSC Resource Kit Wave 3と合わせることにより、より柔軟にWindowsの機能、アプリケーション、サービスを管理可能になっています。
今後のWindows Server戦略は、 DSCに基づくことが示唆されていることにも触れており、まぁそういうことです。*2
実際のパフォーマンス改善具合はまた今度測定、公開しますが、速度は実際の現場でとても大事です。改善と呼べるものであることを期待したいですね。
OneGet
今回、発表された中で大きな期待が寄せられているのがOneGetです。
先日来のSkyDriveからOneDriveへの改名。この流れと同じくして、 One- が冠せられたこの機能は、 Windowsでのapt-get提供です。そのプロトタイプリリースでは、Chocolateyがリポジトリとして選ばれています。
CodePlexでオープンにされているので、ぜひ見てください。
OneGet が可能にすること
単純にいうと、OneGetによりLinuxでやっていたapt-getができるようになると思えばイメージしやすいでしょう。
その例として次のように紹介されています。
- ソフトウェアリポジトリ一覧が管理可能、検索、提供、インストールできるようになる
- 必要なリポジトリを絞って検索可能になる
- PowerShellを用いて、シームレスにリポジトリからソフトウェアをインストール、アンインストール可能になる
OneGetがこれまでのChocolatey と違う点
Chocolatey開発者とも同意をとって、C# でスクラッチにて書き起こしています。これにより、パフォーマンスの向上、OneGetとの結合強化、WMI経由でNative APIを叩いて制御されるなど、OneGet Core APIを介して様々なプロバイダーを提供することを可能にしています。
この仕組みを他のリポジトリにも適用することで、Core APIから他のプロバイダを呼び出すことができる予定です。Chocolateyをプロトタイプに広がるのが楽しみですね!
OneGet コマンドレット
PowerShellコマンドを叩いて、実行が可能です。
OneGetモジュールが提供されており、
Import-Module -Name OneGet
コマンドレットが提供されています。
Get-Command -Module OneGet
CommandType Name Source ----------- ---- ------ Cmdlet Add-PackageSource OneGet Cmdlet Find-Package OneGet Cmdlet Get-Package OneGet Cmdlet Get-PackageSource OneGet Cmdlet Install-Package OneGet Cmdlet Remove-PackageSource OneGet Cmdlet Uninstall-Package OneGet
これを使えば、 GUIでのインストール対象ソフトウェアの提供もPowerShellで可能になっています。
Find-Package | Out-GridView -PassThru | Install-Package

Nugetをみてもいるので、実はAsyncOAuthもあったり。

Zoomitを入れるのも簡単ですね。
Name Version Status Source Summary ---- ------- ------ ------ ------- zoomit 4.50 Installed chocolatey ZoomIt is a screen zoom and annotation tool for technical presentations that include application demonstrations.
PassThruを使わず、自動化も可能なので、今後のソフトウェアインストールの自動展開に有力な手段となるでしょう。
今後のOneGet
他リポジトリのサポートをしていくことが示されており、Chocolatey以外にも対象リポジトリを選択できるようになるようです。Nugetをメインに頑張っていくと、開発者視点ではとてもうれしいですね。
OneGetの詳細
本ブログでも紹介していきますが、こちらもどうぞ。
Network Switches
Microsoftは、 Windows Server 2012 R2でDMTF (Distributed Management Task Force) と標準化されたスキーマを策定しています。この基準に合格した製品、 Arista, Cisco, Huaweiなどが参加しているようですが、これらはSystem Center Virtual Machine Manager 2012 R2で特にカスタムプラグインなしに操作可能です。
特に詳しくは、ブログがあるのでこちらで。Windows 8.1 Update 1ではダメだったことには触れておきますね。*3
まとめ
Jeffreyは、「agileなリリースを」、と発言しており、Microsoftのrapidリリース同様、PowerShellも素早い提供を今後もなされていきます。
WMF5.0のリリース時期について明記はありませんが、いずれにしてもフル機能でなくとも提供され補完されることになるでしょう。
詳しい時期などが公開されたら、それも紹介しましょう。
次回移行で、OneGetのサンプルやBuild、他のほげもげも紹介していきますのでお楽しみに。
using や他の言語的な強化
ほしいです。心から。ISESteroidsのようなISEの強化、あるいはVisual Studio 2013 Update 2 RCでAzure PowerShellにて一部サポートされたようなVisual Studioへの統合も含めて。
でも示唆されなくてしょぼーん。