无法使用 vagrant 和 chef-solo 进行多机配置
Not able to multimachine provision using vagrant with chef-solo
我正在尝试使用 vagrant 和 chef-solo 进行多机配置。一旦我应用 "vagrant up " 命令,我的网络配方就同时应用于 vm1 和 vm2。同样,其他配方得到应用到两个虚拟机。但是,我只想将网络配方应用于 VM1,将其他配方应用于 VM2。我正在使用 chef-solo 12.3.0 .
我的 vagrant 文件是
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
是的,我找到了这个问题的解决方案。在第二行代码中应该有 server1 而不是配置。
server1.vm.provision :chef_solo 做|厨师|
这段代码应该在 VM1 块下。同样,在第 10 行应该是 server2.vm.provision :chef_solo do |chef| .
否则给定的配方将适用于配置块下的所有虚拟机。
下面给出了正确的解决方案。
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
结束
我正在尝试使用 vagrant 和 chef-solo 进行多机配置。一旦我应用 "vagrant up " 命令,我的网络配方就同时应用于 vm1 和 vm2。同样,其他配方得到应用到两个虚拟机。但是,我只想将网络配方应用于 VM1,将其他配方应用于 VM2。我正在使用 chef-solo 12.3.0 .
我的 vagrant 文件是
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
是的,我找到了这个问题的解决方案。在第二行代码中应该有 server1 而不是配置。 server1.vm.provision :chef_solo 做|厨师| 这段代码应该在 VM1 块下。同样,在第 10 行应该是 server2.vm.provision :chef_solo do |chef| . 否则给定的配方将适用于配置块下的所有虚拟机。 下面给出了正确的解决方案。
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
结束