2015-06-22 120 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