[和訳] Chef Client 11.16.0がPowerShell DSCをサポート #opschef_ja #getchef_ja
この記事は1年以上前に投稿されました。情報が古い可能性がありますので、ご注意ください。
本項は Chef Client 11.16.0 gets into PowerShell DSC (2014/09/08) の和訳です。
シェフのみなさん、こんにちは。本日リリースした Chef Client 11.16.0 のWindows版は PowerShell Desired State Configuration (DSC) をサポートするようになりました。DSCはPowerShell 4.0に組み込まれた強力な構成管理プラットフォームで、この度Chefと一緒に使えるようになりました。
試してみるには、Chef Client 11.16.0以降でシステムを構成し、新しく追加されたdsc_script ResourceをRecipeに使います。詳しくはドキュメントを参照してください。
Chef同様、DSCはResourceを与えてシステムを構成します。以降、Chefの新しいdsc_script Resourceをどのように用いて、RecipeからすべてのDSCのResourceへアクセスするかを説明します。また、DSCの将来と題して議論します。
dsc_script Resource
dsc_script Resourceは、Chef RecipeにPowerShellコードの形式でDSC構成を含めたCookbookを作成することができるようになります。Chefのpowershell_scriptやbash Resourceにおけるスクリプトコードの利用とは異なります。しかし、DSCとdsc_scriptを用いることで、スクリプト言語を用いたとき以上の恩恵があります。次は、DSCのArchive Resourceを用いてファイルをunzip (すなわち伸張)する、dsc_scriptを用いたChef Recipeの簡単な例です。
dsc_script 'unzip_powershell_modules' do
code <<-EOH
Archive PSModules
Path = "$home/downloads/modules.zip"
Destination = "$env:programfiles/WindowsPowerShell/Modules"
}
EOH
end
ここでcode Attributeに与えられる文字列がDSCとPowerShellコードです。詳細はDSCのドキュメントを参照してください。PowerShellコードはDSCのArchive Resourceによる“構成”を指定します。このChef Recipeを実行することでDSCコードを呼び出し、Destinationで指定したディレクトリにPathで指定したファイルをunzipします。
tarのような伸張コマンドを実行するChefのbashやpowershell_script Resourceと異なり、dsc_scriptを用いるときにnot_ifやonly_ifのようなべき等性を保証するための防御表現を用いる必要はありません。DSC Resourceは、ChefのResourceのように、本質的にべき等です。
DSC: Chef Resourceの新世界
PowerShell 4.0は、Archiveを含む12の組み込みResourceを持ち、ほとんどはChefに既に存在するResourceとまったく同じものです。ただし、マイクロソフトから最近リリースされたDSC Wave 6 リソースキットをインストールすると、80以上の追加Resourceを用いることができるようになります。
リソースキットをインストールしてPowerShellターミナルでGet-DSCResourceを実行したら、xSQLHAGroup、xWebSite、xADUser、xDNSServer、xVMHyperVという思わせぶりな名前のResourceを見つけるでしょう。ウェブサイトの構成、高可用性データベースの構成、Active Directoryにユーザを作成などといった、それらの名前が暗示する動作を行い、すべてChefのように収束します。dsc_scriptを用いることで、Chef利用者はマイクロソフトとPowerShellコミュニティが提供するDSC自動化の恩恵を受けて強力なCookbookを作成することができます。
DSC構成の再利用
DSC自体は比較的新しいものなので、Chef Recipeに夢中になったのと同じように、意欲的なユーザは既に独自のDSCスクリプトライブラリを開発しているでしょう。次のようにdsc_scriptを用いれば、“DSC Recipe”のようにChef Recipe内に組み込むことができるかもしれません。
dsc_script 'CompanyWiki' do
command '//infra01/configurations/wiki.ps1'
flags AuthType: 'Windows', LogArchive: '//serverlogs/wiki'
end
これはcommand Attributeで指定したwiki.ps1スクリプト(“Recipe”)内のCompanyWikiという名前のDSC構成を実行し、flagsを用いてAuthTypeとLogArchiveパラメータを構成に与えます。
DSC + Chefの未来
ChefのDSCに対する取り組みはこれで終わったわけではありません。
- 私達は既に、DSCを単にChef DSLに与えるというdsc_scriptを越えた、ChefとDSCのより強い結合をデモしました。
- Chef Clientにおけるdsc_scriptに並んで私達が目指すところを説明した、プレビュー版DSCコミュニティCookbookでこの取り組みをテストできます。
- ChefでDSCを用いることで、シェフのみなさんはCookbookを新しく作ったり更新したり、無限の可能性があります。さあ料理しましょう!
DSCはWindowsのすべてを自動化するというChef全体の努力を加速させます。さあ今が始めるときですよ。