Playbooks适用于所有框

时间:2017-03-25 20:53:12

标签: azure vagrant ansible

我的流浪档案:

Vagrant.configure('2') do |config|
  config.vm.define "master" do |node_dotnet|
    node_dotnet.vm.provider :azure do |azure, override|
          ....
      end
  end

  config.vm.provision "ansible" do |ansible|
    ansible.playbook = "playbook1.yml"
  end

  v1.times do |i|
    config.vm.define "random#{i}" do |nodes_py|
      nodes_py.vm.provider :azure do |azure, override|  
          ....
      end
    end
    config.vm.provision "ansible" do |ansible|
      ansible.playbook = "playbook2.yml"
    end
  end
end

但是这两个剧本都被多次应用于所有盒子。 ¿如何解决这个问题?

所以有两个问题,为什么剧本应用了好几次,为什么它们被应用到所有的盒子上?

1 个答案:

答案 0 :(得分:0)

您在配置级别定义了Ansible提供程序(两次),因此它将应用于所有计算机。

甚至可以清楚地看一下你的缩进级别(虽然这与Vagrant文​​件无关)。

Vagrant.configure('2') do |config|
  config.vm.define "master" do |node_dotnet|
    node_dotnet.vm.provider :azure do |azure, override|
          ....
      end
    node_dotnet.vm.provision "ansible" do |ansible|
      ansible.playbook = "playbook1.yml"
    end
  end

  v1.times do |i|
    config.vm.define "random#{i}" do |nodes_py|
      nodes_py.vm.provider :azure do |azure, override|  
          ....
      end
      nodes_py.vm.provision "ansible" do |ansible|
        ansible.playbook = "playbook2.yml"
      end
    end
  end
end