tech.guitarrapc.cóm

Technical updates

PowerShell DSC Resource の公開

謎社ではC# を中心として、PowerShellが隙間産業的に必要なところで使われています。

その1つがPowerShell Desired State Configuration (DSC) です。

今回、謎社で作成/利用している一部のDSC Resourceを公開しました。

GitHub

GitHubで公開しています。

https://github.com/guitarrapc/DSCResources

公開内容

公開しているのは、オープンソースで公開されているリソースを含めて、謎社で利用しているものの一部です。

ScriptCenter

Microsoft PowerShell Teamは、PowerShell DSCのリリースから一貫してResource Kit Waveとしてリソースを作成、公開しています。

どれも破壊的変更を辞さず、どんどん改良していくという意志からPrefixにxがついています。

そのため、特定バージョンのこれらのリソースを利用する際は、必ずcなどPrefixを変更して、破壊的変更の影響がないようにと案内されています。

今回公開したリソースにもScriptCenterから取得し、Prefixを変更したリソースが含まれています。

PowerShellOrgDSC

https://github.com/PowerShellOrg/DSC

リソースを公開しているのは、PowerShell Teamだけではありません。Chef同様にオープンソースで有志が公開しています。

その1つが、Powershell.Orgという世界で最も活発なPowerShellコミュニティが公開しているリソースです。

この中には、StackExchangeで働くPowerShell MVPが作ったものも含まれており、参考になるでしょう。

今回公開したリポジトリは、SubmoduleとしてPoweRshellOrgのDSCリポジトリを向けています。

Custom

謎社で作成、利用しているDSC Resourceの一部です。

今回は、比較的需要の高い2つを公開しました。

ACL

ACLは、フォルダ/ファイルのNTFS権限の設定です。 DSCを利用することで、シンプルなConfigurationでACLが制御可能になります。

https://gist.github.com/guitarrapc/1894c0b1980fa07838c1

継承も含めて制御可能になっており、本番環境で動いているものなので試していただけると幸いです。

ScheduleTask

タスクスケジューラも公開します。 PowerShell Orgの公開しているリソースは、任意の実行ファイルが指定できず、PowerShell Scriptのみとなっています。

他にも各制限がありますが、今回公開したものは制限を可能な限り取り払いました。

例えば、Dailyで毎日実行するものはこう書けます。

https://gist.github.com/guitarrapc/9f314004e66868c14b3a

Dailyで毎日実行するタスクのトリガーを2つにするのも容易です。

https://gist.github.com/guitarrapc/3826f0d2993221c3f80c

他にも1回だけ(Once)、繰り返し実行(Repetition) にも対応しています。

特定のユーザー権限での登録を必須にしてありますので、サンプルを参考にConfigurationDataを用いて、Administratorや任意のユーザーで登録するといいでしょう。

まとめ

Resource書くの簡単なのでどんどん公開すればいいんですよ。もちろんC#でも書けますからね! 近いうちに、Resourceの書き方も紹介します。