Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/date/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Vagrant 无法使用Wagrant和chef solo提供多机供应_Vagrant_Vagrantfile_Chef Solo - Fatal编程技术网

Vagrant 无法使用Wagrant和chef solo提供多机供应

Vagrant 无法使用Wagrant和chef solo提供多机供应,vagrant,vagrantfile,chef-solo,Vagrant,Vagrantfile,Chef Solo,我正在尝试使用Wagrant和主厨solo提供多台机器。一旦我应用了vagrant up命令,我的web配方就同时应用于vm1和vm2。同样,其他配方也应用于两个VM。但是,我只希望web recipe应用于VM1,其他recipe应用于VM2。我使用的是chef solo 12.3.0。 我的流浪档案是 Vagrant.configure("2") do |config| config.vm.provision :chef_solo do |chef| chef.cookbooks

我正在尝试使用Wagrant和主厨solo提供多台机器。一旦我应用了vagrant up命令,我的web配方就同时应用于vm1和vm2。同样,其他配方也应用于两个VM。但是,我只希望web recipe应用于VM1,其他recipe应用于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

是的,我找到了这个问题的解决办法。在第二行代码中,应该是server1而不是config。 server1.vm.provision:chef_solo do|chef| 这段代码应该属于VM1块。同样,在第10行中,它应该是server2.vm.provision:chef|u 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
结束