Edited at

Windows Server2012r2にChef-solo環境構築から実行までの備忘録

More than 1 year has passed since last update.


前提


  • EC2インスタンス


    • 東京リージョン

    • タイプ:m4.xlarge
      (Windows_Server-2012-R2_RTM-Japanese-64Bit-Base-2016.08.11 (ami-0f19db6e))



  • Chef Development Kit 0.19.6

  • chef-solo 12.15.19


構築の流れ


◆Chef Development Kitをインストールする

ここから

https://downloads.chef.io/chef-dk/windows/

インストールしたChef Development Kitを開くとpowershellが起動


◆knife-soloをインストール

> gem install knife-solo 

Thanks for installing knife-solo!
.....
Successfully installed knife-solo-0.6.0
Parsing documentation for knife-solo-0.6.0
Installing ri documentation for knife-solo-0.6.0
Done installing documentation for knife-solo after 1 seconds
1 gem installed ←完了


◆リポジトリ(キッチン)の作成

> knife solo init chef-repo

作成したリポジトリはgitで管理
(gitが使えなかったらインストールする:https://git-scm.com/download/win)

> cd chef-repo
> git init
> git add .
> git commit -m 'first commit'

デフォルトだと多分デスクトップに出来てしまうと思うので

その通りにパスを通すように気をつけるか、パスの通しやすい場所に置く。


◆cookbookの作成

helloってcookbookを作ります。

> knife cookbook create hello -o chef-repo/site-cookbooks

(ここでsite-cookbooksを作成するからパスがややこしくなるだけだが・・・)


◆default.rbってファイルを作成する

chef-repo/site-cookbooks/hello/recipes/default.rb

最後列に以下を追記する



log "Hello"


◆chef.jsonってファイルを作成する

nodesの配下に作成

中身を編集(メモ帳で)

helloというレシピを実行するための書き方(recipesじゃなくてrecipeね!)



{

"run_list": [

"recipe[hello]"

]

}


◆solo.rbってファイルを作成

chef-repo直下に

中身はhelloまでのパスを指定

※windowsの場合は、パスは(円マーク)じゃなくてLinuxみたいに/←ここ本当に注意



cookbook_path ["C:/Users/Administrator/Desktop/chef-repo/chef-repo/site-cookbooks"]



パスもあってるのになんで実行できない!?ってなったら上の※を確認する


◆実行!!

helloファイルの場所によってコマンドが変わるので注意

また、ここは/でも\でも大丈夫

現在のディレクトリはchef-repo

> chef-solo -c solo.rb -j nodes/chef.json

Starting Chef Client, version 12.15.19
resolving cookbooks for run list: ["hello"]
Synchronizing Cookbooks:
- hello (0.1.0)
Installing Cookbook Gems:
Compiling Cookbooks...
Converging 1 resources
Recipe: hello::default
* log[Hello] action write

Running handlers:
Running handlers complete
Chef Client finished, 1/1 resources updated in 07 seconds

無事成功!

やったー!


◆実行文の意味

本来だったらこんな感じらしい

> chef-solo -c chef-repo/solo.rb -j chef-repo/nodes/chef.json

でも今回はこの文章で実行した
> chef-solo -c solo.rb -j nodes/chef.json

「solo.rb」というファイルがデスクトップのchef-repo直下にあったため、

solo.rbの前のchef-repo/が不要。

「chef.json」というファイルがデスクトップのchef-repoの下のchef-repoの下の

nodesの下にあったのでnodesの前のchef-repoが不要。らしい。

ちなみにchef-repoをデスクトップに置かなければ上段の実行コマンドで実行できた。


◆まとめ

Windows server環境でのChef-solo実行に関する記事を見ながらやったけど

なかなか上手くいかなくて今回やっと成功したので備忘録として。。。