##前提
- 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実行に関する記事を見ながらやったけど
なかなか上手くいかなくて今回やっと成功したので備忘録として。。。