无法通过厨师独奏使用vagrant进行多机械配置

时间:2015-06-22 10:48:03

标签: vagrant vagrantfile chef-solo

我正在尝试使用带有厨师独奏的流浪汉进行多机器配置。一旦我申请"流浪汉"命令,我的网页配方适用于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

1 个答案:

答案 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