写我的第一个流浪汉厨师独奏配方我觉得很简单,比如更改主机名。在vagrant文件中,我有这个;
config.vm.provision :chef_solo do |chef|
chef.cookbooks_path = "../../chef/cookbooks"
chef.roles_path = "../../chef/roles"
chef.data_bags_path = "../../chef/data_bags"
chef.json = { :hostname => "foofoo" }
chef.add_recipe "myrecipe"
in myrecipe / recipes / default.rb;
myvar = node[:hostname]
template "/tmp/myfile" do
source "myfile.erb"
owner "root"
group "root"
mode 0644
variables(
:myvar => myvar
)
end
in myrecipe / templates / default / myfile.erb;
<%= @myvar %>
这实际上不起作用。 / tmp / myfile以/ etc / hostname中的真实主机名结尾。在敲了敲我的头很长一段时间后,我发现了这些变化;
在vagrant文件中;
chef.json = { :myhostname => "foofoo" }
配方文件中的;
myvar = node[:myhostname]
所以,似乎':hostname'在某种程度上是特殊的,但是尽可能地尝试,我找不到任何解释原因,或者如何覆盖它的文档,或者可能有的其他“特殊”值。
大多数文档似乎都假设我尚未达到某种程度的能力。所以,我可能已经看到了答案而没有认出来。任何人都可以向我指出可以解释这一点的'绝对新手'文档吗?
答案 0 :(得分:1)
首先:这也是我第一次使用chef-solo进行的实验:更改主机名ist 不最简单的事情(因为对于剩下的Chef运行,旧的主机名仍然如此你必须做丑陋的事情来重新启动Chef等...); - )
第二:node['hostname']
确实很特别(它是所谓的automatic attribute),它会通过ohai从目标主机更新,因此您可以在模板中使用它,例如。< / p>
编辑:您可以使用this cookbook来申请主机名。