我正在开发一本厨师食谱,我正在用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
属性?
答案 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认为的不同?