Chef infra 如何在vagrant中重写Chef节点名称?

Chef infra 如何在vagrant中重写Chef节点名称?,chef-infra,vagrant,chef-solo,Chef Infra,Vagrant,Chef Solo,我正在开发一本厨师烹饪书,我正在和流浪汉和厨师索洛一起测试。食谱查看node.name以做出某些决策。为了测试它的各种变体,我想为Vagrant的测试运行重写该属性。所以我试过了 Vagrant.configure("2") do |config| ... config.vm.provision :chef_solo do |chef| ... chef.json = { 'name' => 'randomhostname', } end e

我正在开发一本厨师烹饪书,我正在和流浪汉和厨师索洛一起测试。食谱查看
node.name
以做出某些决策。为了测试它的各种变体,我想为Vagrant的测试运行重写该属性。所以我试过了

Vagrant.configure("2") do |config|
  ...
  config.vm.provision :chef_solo do |chef|
    ...
    chef.json = {
      'name' => 'randomhostname',
    }
  end
end
但似乎没有效果


我知道
name
属性默认为由ohai管理的
hostname
属性(另请参见),但是否有方法覆盖
name
属性?

否,这是不可能的——它是一个所谓的自动属性,因此始终具有最高优先级,并覆盖您指定的所有内容。您是否可以使用不同的属性,或者您将使用哪本食谱来证明节点的名称与Chef认为的不同?

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

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

您应该能够使用:

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

这就是我要找的。这显然没有记录,是的。我发现这一点是因为的一个用户提交了一个bug.:)文件正在修复中: