在流浪的厨师独奏食谱中覆盖主机名

时间:2013-04-24 17:27:01

标签: chef vagrant

写我的第一个流浪汉厨师独奏配方我觉得很简单,比如更改主机名。在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'在某种程度上是特殊的,但是尽可能地尝试,我找不到任何解释原因,或者如何覆盖它的文档,或者可能有的其他“特殊”值。

大多数文档似乎都假设我尚未达到某种程度的能力。所以,我可能已经看到了答案而没有认出来。任何人都可以向我指出可以解释这一点的'绝对新手'文档吗?

1 个答案:

答案 0 :(得分:1)

首先:这也是我第一次使用chef-solo进行的实验:更改主机名ist 最简单的事情(因为对于剩下的Chef运行,旧的主机名仍然如此你必须做丑陋的事情来重新启动Chef等...); - )

第二:node['hostname']确实很特别(它是所谓的automatic attribute),它会通过ohai从目标主机更新,因此您可以在模板中使用它,例如。< / p>

编辑:您可以使用this cookbook来申请主机名。