tech.guitarrapc.cóm

Technical updates

PowerShell DSC の記事といろいろ

なんだかご縁があり @IT Windows Server Insider様でDesired State Configuration (DSC) の超入門記事を全2回で書いています。

@IT/Windows Server Insider : PowerShell Desired State Configuration(DSC)とは(前) (1/2)

2014/5/23に第1回の記事が日の目を浴びたので、記事の文字数制限から出た少し補足を。

DSC と PowerShell

「DSCってPowerShellの機能?」と聞かれることがこれまでもたびたびあり、記事でも説明しようと頑張っています。

さくっとできる説明が思いつかず、どうしても伝わりきってない気がしています。

単純にいうと、

  • Windows PowerShellはWindows Management Infrastructure(WMF) の中心となっている機能
  • DSCはPowerShellに追加された機能ではなく、 WMF 4.0でCIMに追加された機能

つまり

  • PowerShellの中にDSCが含まれているわけではない
  • が、PowerShellとDSCは同じWMFという枠組みのそれぞれの機能

という位置づけです。

PowerShell DSC の DSC

DSCの実体は、極端にいうと「MOF (Managed Object Format)」と「WSMan(WS-ManagementのWindows実装)」です。具体的には、WMI(CIMのWindows版実装) のRoot\Microsoft\Windows\DesiredStateConfigurationにNameSpaceが追加されています。 CIM・MOF・WS-Managementは、Distributed Management Task Force(DMTF) 標準にそった技術です。

そして、DSCはMOFに書かれた内容でCIMセッションを通して対象サーバーの構成を適用しています。WMIではなくCIMとしているのは、 CIMはよりDMTF標準であり、non-Windowsも対象にしているためです。

PowerShell DSCといっても、DSCはサーバー構成を適用する役割を担っておりDSC自体のアクセスはMOFを生成できれば他の言語でも、あるいはWindowsに限らずLinuxですら利用できます。*1

実際、先日のTechEdでは、 ChefでDSC Resourceを呼び出す例が挙げられています。*2

PowerShell DSC のPowerShell

DSCのMOF作成を簡単にしたい。そこで、PowerShellです。

PowerShellは、 MOFの生成と補助を構文レベルでサポートしています。

それがPowerShell 4.0で足された「Configuration」構文であり、「Resource」の記述、 DSCキーワードやDSC Moduleです。

DSCは、特定のプログラミング言語でないとアクセスできないわけではありませせんが、PowerShellを使うと楽に宣言型構文でかける! という、両者の組み合わせがPowerShell DSCです。

つまり、PowerShell DSCと言った時は、PowerShellを使って、DSC操作ということを指します。

DSCサーバー と ノード

DSCはWMF4.0以上が入っていれば、 Windows Server 2012 R2のようなサーバー系OSでなく、 Windows 8.1のようなワークステーション系OSでも利用できます。

とはいえ、 Windows Server 2012だとPullがちょっといけてないのですが。それは別の機会に

PowerShellの起動方法

Windows Server 2012 R2やWindows Server 2012は、タスクバーに初期状態でPowerShell.exeがピン止めされています。しかしそれ以外のOSでは、GUIで到達する方法が微妙に違います。特に、Windows 8より前は、スタートメニューのあり、なし(タイル)があります。

そこで今回は「ファイル名を指定して実行」で起動する方法を紹介しました。 win + rのPowerShell起動が優れているのは、 OSが64bitの場合はx64版を起動して、 OSが32bitはx86を起動するのです。 Windows Server 2012 R2で、タスクバーンにあるのはx64です。

管理ツールやStart Menuを使ったPowreShell起動を紹介しなかったのは、 今回対象にしたDSCが動作するどのOSでも確実に起動できる方法だから。 x64やx86は、他のツール (例VSやJenkinsはx86を参照する) を使うとき以外は基本気にしないのがいいと思っています。

今後

@IT様では、実際にDSCを動作する様子や説明を予定しています。

Configuration構文の説明やリソースの詳細説明は、また別の機会になりそうですが、それもどこかで説明します。が、Configuration Dataを使う方法などもあるため、そこでは全部のやり方は触れない予定です。 今回の連載が、DSCを使うきっかけになれば幸いです。

*1:詳細は後日の記事で

*2:ChefはRubyを利用