使用NFS和private_network时,将Vagrant VM暴露给网络

fro*_*wns 10 ruby vagrant

我有一台多机Vagrant设置.使用NFS和private_network我可以使我需要的一切工作(Drupal,PHP等)除了让大厅里的人访问我的VM上运行的Web应用程序.据我所知,这private_network使得无法从外部世界连接到VM.

有没有办法创建一个私有和公共网络,以便所有VMS除了负载均衡器是私有的,负载均衡器可以通过主机的IP访问?

hosts = {
  "wloadlocal" => "192.168.33.10",
  "wweblocal1" => "192.168.33.11",
  "wweblocal2" => "192.168.33.12",
  "wwhlocal" => "192.168.33.13",
}

Vagrant.configure("2") do |config|
  hosts.each do |name, ip|
    config.vm.define name do |machine|
      machine.vm.box = "precise32"
      machine.vm.box_url = "http://files.vagrantup.com/precise32.box"
      machine.vm.hostname = "%s.example.org" % name
      machine.vm.network :private_network, ip: ip
      machine.vm.network "public_network"
      machine.vm.provider "virtualbox" do |v|
          v.name = name
          v.customize ["modifyvm", :id, "--memory", 200]
      end
      if name == "wloadlocal"
        machine.vm.network "forwarded_port", guest: 80, host: 8880
      end
    end
    #sync folders
    config.vm.synced_folder "~/data", "/data", type: "nfs"
  end
end
Run Code Online (Sandbox Code Playgroud)

编辑#1

在Vagrant的NFS文档页面上,它指出在使用VirtualBox和NFS时,您必须使用private_network:

如果您正在使用VirtualBox提供程序,则还需要确保已设置专用网络.这是由于VirtualBox的内置网络的限制.使用VMware,您不需要这个.

出于性能原因,我需要使用NFS,但我还希望能够在需要时通过本地网络共享在VM中运行的应用程序.这可能吗?

luc*_*ell 2

我能找到的最简单的方法是使用多个网络,如评论之一中提到的。所以我的配置最终看起来像这样:

  config.vm.define :host01 do |host01|
    postgres01.vm.network :private_network, ip: '192.168.37.2'
    config.vm.network "public_network"
    host01.vm.hostname = 'host01'
    configure_vm(host01)
  end
Run Code Online (Sandbox Code Playgroud)

然后我vagrant ssh host01查找了最终出现192.168.0.102在我的网络上的公共IP。现在我可以从我的主机访问该 IP。请注意,使用公共网络功能有一些注意事项。