4

我正在开发一本厨师食谱,我正在用 Vagrant 和 chef-solo 进行测试。食谱着眼于node.name做出某些决定。为了测试它的各种变体,我想覆盖该属性以从 Vagrant 进行测试运行。所以我尝试了

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

但似乎没有效果。

我知道该name属性默认hostname为由 ohai 管理的属性(另请参阅此问题),但是有没有办法覆盖该name属性?

4

3 回答 3

5

您应该能够使用:

Vagrant.configure("2") do |config|
  ...
  config.vm.provision :chef_solo do |chef|
    ...
    chef.node_name = 'node_name'
    ...
  end
end
于 2013-05-17T01:51:45.223 回答
3

如果名称默认为虚拟机的主机名,那么您可以更改主机名吗?

config.vm.hostname = "new.host.name"
于 2013-05-16T20:45:29.680 回答
1

不,没有办法 - 这是一个所谓的自动属性,因此始终具有最高优先级并覆盖您指定的所有内容。您是否可以使用不同的属性,或者您要说服哪个食谱与 Chef 认为的不同?

于 2013-05-16T14:00:36.567 回答