発表されてからちょっと時間が経ってしまいましたがざっくりまとめておきます。
公式情報はコチラ
以前PowerShell 6.0、PowerShell Coreのロードマップが発表された時はWindows PowerShell Desired State Configuration(以後PowerShell DSC)について言及されませんでしたが、今回はじめてPowerShell DSCの今後について言及されました。
本エントリではこの内容について説明していきます。
これまでのPowerShell DSC
PowerShell DSCとは何ぞや?といった話についてはぎたぱそ先生の記事が全てですのでそちらでご確認ください。
これまでのPowerShell DSCについては、Windowsで動作するもの、Linuxで動作するものの2種類があり、それぞれ、
1. Windows PowerShell Desired State Configuration
- WMIを基盤としている
- Windows Management Framework (WMF)の一部として提供されており、管理にはPowerShell 4.0~5.1を必要とする
- DSC ResourceはCまたはPowerShellで記述する
2. Desired State Configuration for Linux(DSC for Linux)
- OMIを基盤としている
- PowerShellがクロスプラットフォーム化する前に生まれているため、管理にPowerShellは使わずPython 2.4~3.4を必要とする
- DSC ResourceはCまたはPythonで記述する
といった特徴があります。
ちなみにDSC for Linuxについてはこのブログでも試していますので以下の記事を参考にしてください。
Desired State Configuration Core (DSC Core)
PowerShellがPowerShell Coreとなり.NET Coreを基盤としたクロスプラットフォームなツールになることにあわせて、PowerShell DSCも.NET Core/PowerShell Coreを基盤としたDesired State Configuration Core (以後DSC Core)
として発展させていくとの事です。
DSC Coreについて以下の方向性が挙げられています。
- WMIへの依存をなくす
- WMFへの依存をなくす
- xcopyで配布可能なパッケージとする
- WMIを使わないC/C++、Python、PowerShellで書かれたDSC Resourceをサポートする
- PowerShell Core/.NET Coreを必要とする
ざっくり言ってしまえばクロスプラットフォーム化のためにPowerShell Core/.NET Coreを基盤とし、WMIやWMFへの依存(要はWindows依存)を取り除く方向になります。
DSC Coreの目指すことろ
こちらについてはPowerShell Blogの内容をそのまま引用します。
Our goals with DSC Core are to minimize dependencies on other technologies, provided a single DSC for all platforms, and position it better for cloud scale configuration while maintaining compatibility with Windows PowerShell Desired State Configuration.
DSC Coreの下位互換性
目指すところは分かりますが、これまでのPowerShell DSCとの互換性をどう取るのかは非常に重要であり、もっとも難しい問題だと思います。
この点についてPowerShell Blogでは以下の様に述べられています。
DSC Resourceに関しては.NET Standard 2.0の互換性で既存のリソースはそのまま動く様にする
コマンドレットに関しては従来のPowerShell DSCとの互換を取らず、新しいコマンドセットを提供する
Azure DSC ExtensionはDSC Core用に新規のものを提供する
Pullサーバーとの通信に関して、DSC Coreでもこれまで通りのプロトコルを使い既存のPullサーバーと通信できる様にする
Configurationに関しては、これまで通り変更が無い様にし、PowerShell 6.0でコンパイルしなおすだけで使える様にする
PowerShell Blogでも注記されていますが、これらの点についてはあくまでも現時点での計画です。
私見ですが、正直これらをすべて完璧に満たすのは難しいと思っていますので、今後の状況によっていろいろ変化があると思われます。
DSC Coreのリリース時期
DSC Coreのリリース時期に関して、先ずはAzure向けに年末までに最初のリリースを出すそうです。
(流石に早すぎるのでここでの"リリース"はアルファ版とかだと思います...)
PowerShell DSCがクロスプラットフォーム化するメリットを一番享受できるのがAzureでしょうし、環境自体が日々更新され新しくなっていくAzureにフォーカスするのは妥当な判断だと思います。
(逆にWindowsを中心としたオンプレ環境だと今のPowerShell DSCを新しくするメリットがほとんどないように思われます...)
まとめ
ざっくりとですがDSC Coreについてまとめてみました。
正直なところ、DSC Coreの仕組みやPowerShell Blogで述べられている事がどこまで実現可能かについて結構疑問点があります。
ですが、今それについてあれこれ言っても仕方ないとも思っているので今後の情報で疑問を解決していきたいと思います。