我正在尝试使用带有厨师独奏的流浪汉进行多机器配置。一旦我申请"流浪汉"命令,我的网页配方适用于vm1和vm2。同样,其他配方也适用于两个虚拟机。但是,我希望只有Web配方应该应用于VM1和其他配方到VM2。我正在使用Chef-solo 12.3.0 我的流浪文件是
Vagrant.configure("2") do |config|
config.vm.provision :chef_solo do |chef|
chef.cookbooks_path = "cookbooks"
chef.add_recipe "pram::web"
config.vm.define :vm1 do |server1|
server1.vm.box = "ubuntu14"
server1.vm.network :private_network, ip: "192.168.102.101"
end
end
config.vm.provision :chef_solo do |chef|
chef.cookbooks_path = "cookbooks"
chef.add_recipe "pram::others"
config.vm.define :vm2 do |server2|
server2.vm.box = "ubuntu14"
server2.vm.network :private_network, ip: "192.168.102.102"
end
end
end
答案 0 :(得分:0)
是的,我得到了这个问题的解决方案。在第二行代码中应该是server1而不是config。 server1.vm.provision:chef_solo do | chef | 这段代码应该在VM1块下。同样,在第10行它应该是server2.vm.provision:chef_solo do | chef | 。 否则给定的配方将适用于配置块下的所有VM。 正确的解决方案如下。
Vagrant.configure("2") do |config|
config.vm.define :vm1 do |server1|
server1.vm.box = "ubuntu14"
server1.vm.network :private_network, ip: "192.168.102.101"
server1.vm.provision :chef_solo do |chef|
chef.cookbooks_path = "cookbooks"
chef.add_recipe "pram::web"
end
end
config.vm.define :vm2 do |server2|
server2.vm.box = "ubuntu14"
server2.vm.network :private_network, ip: "192.168.102.102"
server2.vm.provision :chef_solo do |chef|
chef.cookbooks_path = "cookbooks"
chef.add_recipe "pram::others"
end
end
端