Vagrantfileのchef.jsonで定義した値をtemplateで使うときの注意点

Vagrantfileの中で
chef.json = {"hostname" => "abc.example.com",}
と定義して、
その値をテンプレートファイルから(templates/default/network.erb)
NETWORKING=yes
HOSTNAME=<%= node["hostname"] %>
と参照したかったのですが、なぜか反映されませんでした。

chef.jsonで定義したhostnameの値ではなく現在のサーバのhostname値がそのままテンプレートファイルに埋め込まれてしまっていました。(日本語難しい・・・)

たぶんohaiが収集したサーバの情報がnode["hostname"]に設定されて、それがそのまま使われているんではないかと思います。(このあたりよくわかってない)

対処法

キー名を"myhostname"みたいにしたらうまくいきました。

Vagrantfile
chef.json = {"myhostname" => "abc.example.com",}
templates/default/network.erb
NETWORKING=yes
HOSTNAME=<%= node["myhostname"] %>
Chef/VagrantのAttribute周りはなかなか難しいですね。
カテゴリ: