[Chef]Attributesのキーはシンボルでも文字列でもどっちでもいける
文字列 - 文字列
Vagrantfilechef.json = {"myhostname" => "example.com" }
テンプレートファイル
HOSTNAME=<%= node["myhostname"] %>
シンボル - 文字列
Vagrantfilechef.json = {:myhostname => "example.com" }
テンプレートファイル
HOSTNAME=<%= node["myhostname"] %>
文字列 - シンボル
Vagrantfilechef.json = {"myhostname" => "example.com" }
テンプレートファイル
HOSTNAME=<%= node[:myhostname] %>
シンボル - シンボル
Vagrantfilechef.json = {:myhostname => "example.com" }
テンプレートファイル
HOSTNAME=<%= node[:myhostname] %>
なぜこれで動くのか?
推測ですが、Vagrantfileのchef.jsonの方は一度JSONに変換されるので、その時にRubyで書いたシンボルがJSの文字列に変換されるのだと思います。一方、template側でなぜシンボル・文字列が同じように扱えるのかはわかりませんでした><
これがChefの仕様なのかな?