2012年11月1日木曜日

【chef】cookbookのtemplatesを使ってみた

■概要
前回までにcookbookのrecipe機能とattributesを使ってchefを実行しましたが、
今回は更にtemplatesを使ってよりchefの理解を深めていこうと思います。
参考:
http://kakakikikeke.blogspot.com/2012/10/centoschefcookbookrecipe.html
http://kakakikikeke.blogspot.com/2012/10/chefcookbookattributes.html

簡単に説明をしてしまうと
  • templatesは設定ファイルをテンプレートとして使いまわせる機能
です。
前回までに書いたrecipeを更に汎用化するために用いる機能です。

■templates設定&実行
cd /chef-repo/cookbooks/test/templates/
vi default/test.conf.erb
hogehoge
     ※とりあえずは適当な内容を記載しておきます。
     ※本来であれば必要に応じた設定ファイルの内容を記載します。

cd /chef-repo/cookbooks/test/recipes
vi default.rb
template "#{node.file.conf}" do
  owner "root"
  group "root"
  mode "0644"
end

cd /chef-repo/cookbooks/test/attributes
vi default.rb
default["file"]["conf"] = "/tmp/test.conf"

chef-solo -c /etc/chef/solo.rb -j /etc/chef/chef.json
/tmp/test.confが存在しファイルの中身がhogehogeになっていると思います。

こんな感じで設定ファイル等をテンプレート化することで同じ内容の設定ファイルを配ることができます。
今回は更に応用してみます。

■応用
cd /chef-repo/cookbooks/test/templates/
vi /default/test.conf.erb
hogehoge
<% @user.each do |user| -%>
<%= user %>
<% end -%>

cd /chef-repo/cookbooks/test/recipes
vi default.rb
template "#{node.file.conf}" do
  owner "root"
  group "root"
  mode "0644"
  variables({
    :user => node[:file][:conf][:user]
  })
end

cd /chef-repo/cookbooks/test/attributes
vi default.rb
default["file"]["conf"] = "/tmp/test.conf"
default["file"]["conf"][user] = ["kakakikikeke", "yoshi"]

chef-solo -c /etc/chef/solo.rb -j /etc/chef/chef.json
/tmp/test.confが存在しファイルの中身がhogehogeとkakakikikekeとyoshiになっていると思います。


このようにテンプレート化内の値は別途attributesに記載することもできるので、環境に応じて必要な部分を変更することも可能です。

0 件のコメント:

コメントを投稿