概要
Templateで設定ファイルにNodeごとに異なる値を設定する
詳細
Templateで設定ファイルにNodeごとに異なる値を設定します
サンプル
仕様
・vagrantで作成したUbuntu1204環境内でlocalhostへのプロビジョニング
・sublime_sunippetterのgemをインストールする
・/home/vagrant/sublime_snippetにSunippetdefineをTemplateを利用して配置
手順
# kitchenの作成 knife solo init sublime_snippet cd sublime_snippet # cookbookの作成 knife solo create sublime_snippet -o cookbook # cookbook/sublime_snippet/recipe/default.rbの編集。詳細は後述 # cookbook/sublime_snippet/template/default/Sunippetdefineの編集。詳細は後述 # localhost.jsonの編集 # solo.rbの編集 # 実行 sudo chef-solo -c solo.rb -j ./localhost.json
cookbook/sublime_snippet/recipe/default.rb
gem_package "sublime_sunippetter" do end template "Sunippetdefine" do path "/home/vagrant/sublime_snippet/Sunippetdefine" source "Sunippetdefine.erb" owner "vagrant" group "vagrant" mode 0644 end bash "generate snippet" do code <<-EOS cd /home/vagrant/sublime_snippet suni EOS end
/home/vagrant/sublime_snippet/Sunippetdefine.erb
# encoding: utf-8 # set output path. default=current directory output_path '/home/vagrant/sublime_snippet/snippet' # set sunippet scope. default=source.ruby scope "source.ruby" # if two args method add :<%=node['sublime_snippet']['field1']%>, :<%=node['sublime_snippet']['args1']%>, :<%=node['sublime_snippet']['args2']%> # if no args method add :<%=node['sublime_snippet']['field2']%>
出力
tree
$ tree . ├── append.sublime-snippet └── remove.sublime-snippet
append.sublime-snippet
$ cat append.sublime-snippet <snippet> <content><![CDATA[ append ${1:name}, ${2:path} ]]></content> <tabTrigger>append</tabTrigger> <scope>source.ruby</scope> <description>append method</description> </snippet>
remove.sublime-snippet
$ cat remove.sublime-snippet <snippet> <content><![CDATA[ remove ]]></content> <tabTrigger>remove</tabTrigger> <scope>source.ruby</scope> <description>remove method</description> </snippet>