前回までにcookbookのrecipe機能とattributesを使ってchefを実行しましたが、
今回は更にtemplatesを使ってよりchefの理解を深めていこうと思います。
参考:
http://kakakikikeke.blogspot.com/2012/10/centoschefcookbookrecipe.html
http://kakakikikeke.blogspot.com/2012/10/chefcookbookattributes.html
簡単に説明をしてしまうと
前回までに書いたrecipeを更に汎用化するために用いる機能です。
今回は更に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
cd /chef-repo/cookbooks/test/recipes
vi default.rb
cd /chef-repo/cookbooks/test/attributes
vi default.rb
chef-solo -c /etc/chef/solo.rb -j /etc/chef/chef.json
こんな感じで設定ファイル等をテンプレート化することで同じ内容の設定ファイルを配ることができます。
今回は更に応用してみます。
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
cd /chef-repo/cookbooks/test/recipes
vi default.rb
cd /chef-repo/cookbooks/test/attributes
vi default.rb
chef-solo -c /etc/chef/solo.rb -j /etc/chef/chef.json
このようにテンプレート化内の値は別途attributesに記載することもできるので、環境に応じて必要な部分を変更することも可能です。
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 件のコメント:
コメントを投稿