humangas's blog

自分の振り返りを適当に書いてます。書きっぷりはそん時の気分によって変わります。

入門Chef Solo:11-テンプレートから設定ファイルを配置したい - Template

入門Chef Solo - Infrastructure as Code

入門Chef Solo - Infrastructure as Code

Template

テンプレートを使ったレシピの例:

template "nginx.conf" do
 path "/etc/nginx/nginx.conf"
 source "nginx.conf.erb"
 owner "root"
 group "root"
 mode 0644
end

使用されるテンプレート

templates/default/nginx.conf.erb

  • defaultのものを使う場合はsourceを省略してもよい
  • templateにフルパスを指定する場合はpathを省略してもよい

テンプレート内ではAttributeが使える

テンプレートに記述する変数

  • JSONファイルで指定
  • Ohaiで取得

JSONファイルで指定

JSONファイル

{
 "nginx": {
 "port" : 80
 },
 "run_list":[
 "nginx"
 ]
}

テンプレートには次のようにキーと文字列を指定して記述する。

<%= node['nginx']['port'] %>

Ohaiで取得

Ohaiで取得する場合は、テンプレートには次のようにシンボルを指定して記述する。

<%= node[:platform] %>

テンプレートはまるっと既存のをもってくるところから始める

Chefのレシピを書き始めた段階では、設定ファイル系のテンプレートは既存のものあるいはパッケージを入れたときのデフォルトのものをそのままコピーして使い始めるのが定石。その後、各種設定を煮詰めながら徐々に配布しやすい形態に変えていく。