2015-06-22 101 views
0

我正尝试使用流浪汉与厨师独奏来实现多机配置。一旦我应用“vagrant up”命令,我的网络配方将应用于vm1和vm2。同样,其他配方也适用于这两个虚拟机。但是,我只想将网页配方应用于VM1,并将其他配方应用于VM2。我正在使用厨师独奏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

是的,我得到这个问题的解决方案。在第二行代码中应该有server1而不是config。 server1.vm.provision:chef_solo do | chef | 并且此代码块应该位于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