如何在vagrant中覆盖Chef节点名称?

时间:2013-05-16 13:48:11

标签: chef vagrant chef-solo

我正在开发一本厨师食谱,我正在用Vagrant和厨师独奏进行测试。食谱会查看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属性?

3 个答案:

答案 0 :(得分:5)

你应该可以使用:

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

答案 1 :(得分:3)

如果name默认为vm的主机名,那么你可以只更改主机名吗?

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

答案 2 :(得分:1)

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