2013-05-16 64 views
4

我正在开发一个厨师食谱,我正在与流浪和厨师独奏进行测试。食谱看node.name做出某些决定。为了测试各种变体,我想重写Vagrant的测试运行属性。所以我试了如何覆盖流浪汉中的厨师节点名称?

Vagrant.configure("2") do |config| 
    ... 
    config.vm.provision :chef_solo do |chef| 
    ... 
    chef.json = { 
     'name' => 'randomhostname', 
    } 
    end 
end 

但似乎没有效果。

我明白name属性默认为hostname属性,这是由ohai管理(见this question),但有没有办法覆盖name属性?

回答

5

您应该能够使用:

Vagrant.configure("2") do |config| 
    ... 
    config.vm.provision :chef_solo do |chef| 
    ... 
    chef.node_name = 'node_name' 
    ... 
    end 
end 
+0

这就是我正在寻找的。显然没有记录。 –

+0

是的。我发现这是因为['Vagrant :: Butcher'](http://github.com/cassianoleal/vagrant-butcher)的用户提交了一个错误。 :) – cassianoleal

+0

正在修复文档:https://github.com/mitchellh/vagrant/issues/1780 –

1

没有,没有办法 - 这是所谓的自动属性,因此总是最高优先级并覆盖您指定的所有内容。你有可能使用不同的属性,或者你会说服哪个菜谱说节点的名称与厨师认为的不同?

3

如果名称默认为vm的主机名,那么您是否可以更改主机名?

config.vm.hostname = "new.host.name" 
+0

这工作,谢谢。 –