teketeke_55の日記

技術メモとか

fedora 16 へchefをinstall その2

[chef]

先日構築したchefサーバメモの続き
今回は新規cookbookの作成とclientへの同期。

サーバ側

cookbookを作成

#  knife cookbook create testcookbook
** Creating cookbook testcookbook
** Creating README for cookbook: testcookbook
** Creating metadata for cookbook: testcookbook
  • 作成された場所を確認
# updatedb
# locate testcookbook
/var/chef/cookbooks/testcookbook
/var/chef/cookbooks/testcookbook/README.rdoc
/var/chef/cookbooks/testcookbook/attributes
/var/chef/cookbooks/testcookbook/definitions
/var/chef/cookbooks/testcookbook/files
/var/chef/cookbooks/testcookbook/libraries
/var/chef/cookbooks/testcookbook/metadata.rb
/var/chef/cookbooks/testcookbook/providers
/var/chef/cookbooks/testcookbook/recipes
/var/chef/cookbooks/testcookbook/resources
/var/chef/cookbooks/testcookbook/templates
/var/chef/cookbooks/testcookbook/files/default
/var/chef/cookbooks/testcookbook/recipes/default.rb

erbファイルを作成

# vim templates/default/test.conf.erb
sync_test

recipeファイルを作成

# vim recipes/default.rb
template "/tmp/test.conf" do
  source "test.conf.erb"
  variables :sync_test=> node[:sync_test]
  action :create
end

attributesをファイル作成

# vim attributes/testcookbook.rb
sync_test "test"

cookbookをupload

# knife cookbook upload testcookbook
Uploading testcookbook             [0.0.1]

※uploadしないとchef-serverに変更などが反映されない


client側

jsonファイルを作成

ファイルの場所は任意で

# vim /root/.chef/chef.json
{
    "run_list": [
       "recipe[testcookbook]"
    ]
}

chef-clientを実行

先ほど作成したjsonファイルを読み込ませてやる

# chef-client  -j /root/.chef/chef.json

[Mon, 12 Dec 2011 14:59:04 +0900] INFO: *** Chef 0.10.4 ***
[Mon, 12 Dec 2011 14:59:05 +0900] INFO: Setting the run_list to ["recipe[testcookbook]"] from JSON
[Mon, 12 Dec 2011 14:59:05 +0900] INFO: Run List is [recipe[testcookbook]]
[Mon, 12 Dec 2011 14:59:05 +0900] INFO: Run List expands to [testcookbook]
[Mon, 12 Dec 2011 14:59:05 +0900] INFO: Starting Chef Run for chef-client
[Mon, 12 Dec 2011 14:59:05 +0900] INFO: Loading cookbooks [testcookbook]
[Mon, 12 Dec 2011 14:59:05 +0900] INFO: Processing template[/tmp/test.conf] action create (testcookbook::default line 10)
[Mon, 12 Dec 2011 14:59:05 +0900] INFO: template[/tmp/test.conf] updated content
[Mon, 12 Dec 2011 14:59:06 +0900] INFO: Chef Run complete in 0.583654 seconds
[Mon, 12 Dec 2011 14:59:06 +0900] INFO: Running report handlers
[Mon, 12 Dec 2011 14:59:06 +0900] INFO: Report handlers complete

指定した場所を確認してみる

# ls /tmp |grep test
test.conf

中身を確認

# cat /tmp/test.conf
sync_test

ちゃんと同期できているようだ。
client側でファイルを修正したりした後でもchef-clientを実行すればserver側のrecipe内容で同期される。