2016-09-07 26 views
0

如何根据condition告诉vagrantprovisionVagrant Multi VM:根据条件设置

Vagrant.configure(VAGRANTFILE_API_VERSION) do |config| 
    # Iterate through entries in YAML file 
    servers.each do |servers| 
     config.vm.define servers["name"] do |srv| 
     srv.vm.hostname = servers["name"] + DOMAIN 
     srv.vm.box = servers["box"] 
     srv.vm.network "private_network", ip: servers["ip"] 
     srv.vm.synced_folder ".", "/data", id: "mapping", disabled: servers["share"] 
     srv.vm.provider :virtualbox do |vb| 
      vb.memory = servers["ram"] 
      vb.customize ["modifyvm", :id, "--natdnshostresolver1", "on"] 
     end 
     end 
    end 
    end 

我要添加这样的事情:

servers.each do |servers| 
     config.vm.define servers["name"] do |srv| 
     srv.vm.hostname = servers["name"] + DOMAIN 
     srv.vm.box = servers["box"] 
     srv.vm.network "private_network", ip: servers["ip"] 
     srv.vm.synced_folder ".", "/data", id: "mapping", disabled: servers["share"] 
     srv.vm.provider :virtualbox do |vb| 
      vb.memory = servers["ram"] 
      vb.customize ["modifyvm", :id, "--natdnshostresolver1", "on"] 
     end 
     if servers["name"] == "server1" 
      config.vm.provision :chef_solo do |chef| 
      chef.cookbooks_path = "#{cookbooks}" 
      chef.add_recipe "chef_blah::server" 
      end 
     else 
      puts("Skipping it...") 
     end 
     end 
    end 

但每次它执行上的所有虚拟机

provision块,我一环

Vagrantfile下纺丝了多虚拟机

回答

0

这应该是srv.vm.provision,即你只在该服务器上定义它而不是根Vagrant配置。

+0

感谢@coderanger,我计算过,后来:) – devnull

0

我想我找到了解决方案。这是我的错

代替:

config.vm.provision :chef_solo do |chef| 

我应该用

srv.vm.provision :chef_solo do |chef| 

srv循环