tech.guitarrapc.cóm

Technical updates

Windows Management Framework 5.0 Preview (PowerShell 5.0 Preview) がリリースされました

先日 2/Apr/2014 - 3日間の Build 2014 に合わせて Windows Management Framework 5.0*1 が Preview リリースされました。

Windows Management Framework 5.0 Preview April 2014

以前、 WMF4.0 の紹介で触れた通り、PowerShell は WMF に含まれており、 WMF5.0 では PowerShell 5.0 が含まれます。

これまでも、 PowerShell はそのメジャーリリースに合わせて機能が追加されていきました。4.0 では DSCがその大きな目玉となった訳ですが、5.0ではさらに待ち望んでいた機能が加わります。

では早速見ていきましょう。

目次

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 どれでも結構ですが、どれも自動インストールのためのインターフェースが別なのが本当YAKKAIです。

なので、一枚抽象化のラッパーをかませばとてもよろしいのですが、各自が自前で用意するのもナンセンスです。そう、現在主流な方法の1つとして chocolatey があるのですから。

chocolatey は私自身も過去に何度か取り上げていますが、よくいわれる表現が

  • Chocolatey NuGet is a Machine Package Manager, somewhat like apt-get, but built with Windows in mind

とある通り、 Windows での apt-get です。

つまり、chocolatey を使うことで厄介だった ソフトウェアインストールの自動化、ハンドルが容易になります。

  1. インストール手段の一元化
  2. 公開ソフトウェアが1700を超え活発である
  3. NuGetをベースにしており、ローカルリポジトリも可能

しかし、現状の chocolatey には問題もあります。

  1. cmdベースで処理のハンドリングが厄介
  2. コマンドが一元化されておらず、コマンドリファレンスが手放せない

これらは、外部コマンドなので仕方がない。といえばそうですが辛い点です。

DSC がまだパフォーマンス面で改善の余地がある

私自身が作った valentia と DSC Pushでパフォーマンスを測定しても、DSCはまだまだ遅いです。

DSC Push model Sample for AD Memeber (DSC Sever) t ...

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

f:id:guitarrapc_tech:20140406115520p:plain

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

f:id:guitarrapc_tech:20140406115507p:plain

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 への統合も含めて。

でも示唆されなくてしょぼーん。

*1:WMF 5.0

*2:つまり、DSCをサポートしない独自の高価なソフトウェアはMSの戦略とずれているよということです

*3:それはそうだ