アプリケーション固有のパラメータファイルとか、各種サーバの設定ファイルとか、OSそのものの設定ファイルとかを作る場合
ファイルそのものはerbで生成する
ファイルの可変の値はnodeの値かdatabagから取ってくる
ファイルのユーザとか権限も生成のタイミングで設定
テンプレートはerbなのでループから何でも書ける
基本的な書き方
template "/tmp/config.conf" do source "config.conf.erb" end
これで/tmp/にconfig.confが生成できる
もし、生成前後で結果が変わらなかった場合は結果として何もしない
パーミッションを設定する
template "/tmp/config.conf" do source "config.conf.erb" mode 0700 owner "makotan" group "makotan" end
これでmakotanユーザしか見ることの出来ないファイルが完成
erbに渡す値を設定する
通常のnodeの値はerbにnode["configs"]["config_var"]こんな風に書けば値を設定できるけど、Databagからは取得できないのでこんな風にして
template "/tmp/config.conf" do source "config.conf.erb" variables( :config_var => node["configs"]["config_var"] ) end
erbで @config_var って書けばOK!
ファイルを更新したときサービスを再起動する
template "/tmp/config.conf" do source "config.conf.erb" notifies :restart, "service[apache]", :delayed end