我有一台多机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中运行的应用程序.这可能吗?
我能找到的最简单的方法是使用多个网络,如评论之一中提到的。所以我的配置最终看起来像这样:
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。请注意,使用公共网络功能有一些注意事项。
| 归档时间: |
|
| 查看次数: |
1035 次 |
| 最近记录: |