2016-09-07 7 views
0

vagrantからprovisionまでをconditionに基づいてどのように伝えますか?私は、ループ多種多様なVM:条件に基づいてそれぞれのプロビジョニング

Vagrantfileの下でマルチ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 

をしかし、すべての時間が、それはすべてのVM

provisionブロックを実行します

答えて

0

これはsrv.vm.provisionである必要があります。つまり、ルートVagrantの設定ではなく、そのサーバーでのみ定義しています。

+0

おかげ@coderanger srvループで

srv.vm.provision :chef_solo do |chef| 

を使用している必要があります

config.vm.provision :chef_solo do |chef| 

:):それは私のミス

の代わりでした – devnull

0

解決策が見つかりました。私は後ですることを考え出し、私は

関連する問題