Windows ServerのCofigurationをChefでやろうとした場合、
ssh + rsyncが必要なknife-soloは現実的ではないため、
効率的に管理しようと思ったらやっぱりChef Serverを使うのかなと思いチャレンジしています。
そんな中、Linux Chef ClientをChef Serverに繋ぐ例は、
いくつか見つけることができましたが、
やはりWindows ServerはさすがのGoogle先生もご存じないご様子だったので、
自力で頑張ってみました。
前提条件
- Windows 2008 R2 or later
- PowerShell 3.0 or higher
- Chef Server側のenvironmentはあらかじめ作成しておく
(これはWindowsに限らずですが…)
- Amazon S3のPrivate Bucket
(validatorキーの受け渡しに使います)
こんな感じです。
YOUR_*
な所は各々書き換えて使います。
validatorキー含め必要なものは全て外部から取るようにしているので、
まっさらなサーバから流すだけで接続させられます。
Chef Clientの起動スパンは5分毎、
WindowsのScheduledJobは「いつまで」を登録しなければならず、
ここは無限にはできない(PowerShell4.0~はできるらしいけど)ので、
とりあえず適当に大きい値8192日になっていますが、
特に起動スパン5分はあまり一般的ではないようなので用途に合わせて変えてください。
ここらへん↓
$SpanMinutes = 5
$DurationDays = 8192
EC2の場合
以下で囲んでUserDataから流し込めばRDPで繋ぐこと無く完全自動で繋がせることができます。
あらかじめroleを作っておいて、タグ情報からrun_listにそのroleが指定されたnodeのJSONファイルを生成する等すればそのまま即設定まで完了ですね。
<powershell></powershell>
ConfigurationまでChefで完璧にできるようになれば、
Wiondows Serverもログイン無しでセットアップできるとかだいぶ胸熱なので、
ちょっと頑張ってみたいと思いました。