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 Session を通して対象サーバーの構成を適用しています。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 V4 で足された 「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を利用