2013-04-24 99 views
1

写我的第一个流浪厨师独奏食谱我想到了一些简单的东西,比如改变主机名。在流浪文件中,我有这个;在流浪厨师独奏配方中重写主机名

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中的真实主机名结束。很久以后,我的头撞过头,我碰到了这些变化;

在流浪文件中;

chef.json = { :myhostname => "foofoo" } 

在配方文件中;

myvar = node[:myhostname] 

所以,似乎“:主机名”是特殊的莫名其妙,但尽量为我可能,我找不到解释了为什么,或如何覆盖它,或者其他什么“特殊”的值有任何文件可能可用。

大部分文档似乎都假设我还没有达到某种程度的能力。所以,我可能已经看到了答案,并没有认出它。任何人都可以向我指出可以解释这个问题的'绝对初学者'文档吗?

回答

1

第一:这是正是我与厨师独奏第一实验也和:更改主机名IST 一个可以做(最简单的事情,因为厨师的其余部分运行旧的主机名仍然让你不得不做丑陋的东西重新启动厨师等);-)

二:node['hostname']是专用的确(这是一个所谓的automatic attribute),它就会从目标主机更新通过​​这样你就可以在你的模板例如使用

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

+0

有没有办法在vagrant文​​件中改变它呢?例如,我可以使用'config.vm.base_mac =“auto”'设置VM MAC('node [:macaddress]')。 – CAB 2013-04-24 19:14:25

+0

我在vagrant 1.0.x文档中发现了'config.vm.host_name',但在新版本的文档中找不到任何类似的东西。我从实验中知道它不起作用 - vm:以下设置不存在:host_name' – CAB 2013-04-24 19:51:57

+0

只有厨师才有可能,但它不太好。对我而言,我制定了一条规则,即使在厨师环境中,我也会应用任何与网络有关的设置(并且主机名为一个),原因有两个:a)引导问题和b)失败和失去连接的风险 – cmur2 2013-04-24 20:11:57