Vagrant 流浪者多虚拟机:根据条件提供每个虚拟机

Vagrant 流浪者多虚拟机:根据条件提供每个虚拟机,vagrant,chef-infra,provisioning,vagrantfile,Vagrant,Chef Infra,Provisioning,Vagrantfile,我如何根据条件将流浪汉告知规定?我在一个循环下旋转多个虚拟机 vagrant文件: 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 =

我如何根据
条件将
流浪汉
告知
规定
?我在一个循环下旋转多个虚拟机

vagrant文件

   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
块时,都应该是
srv.vm.provision
,也就是说,您只在该服务器上定义它,而不是在根Vagrant配置上定义它。

应该是
srv.vm.provision
,也就是说,您只在该服务器上定义了它,而不是根Vagrant配置。

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

而不是:

config.vm.provision :chef_solo do |chef|
我应该用

srv.vm.provision :chef_solo do |chef|

srv
循环中

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

而不是:

config.vm.provision :chef_solo do |chef|
我应该用

srv.vm.provision :chef_solo do |chef|
srv
循环中