如何让两个流浪盒互相交谈?

时间:2015-05-27 20:43:03

标签: vagrant

假设我制作了两个流浪盒,foobar

$ mkdir -p foo bar
$ pushd foo; vagrant init hashicorp/precise32; vagrant up; popd
$ pushd bar; vagrant init hashicorp/precise32; vagrant up; popd

现在假设我在foo上启动了一个HTTP服务器:

$ cd foo
$ vagrant ssh -c 'python -m SimpleHTTPServer 8080

我的问题是,如何让barcurl进行沟通(例如通过foo)?

$ cd bar
$ vagrant ssh -c 'curl http://????'

2 个答案:

答案 0 :(得分:1)

虽然问题没有说清楚,但我认为这个较老的问题是:if the *same* development machine is running two vagrant instances, how can an app running on foo fetch data from a url on bar`。

如果是这样,我最近遇到了两个Rails应用程序(每个应用程序在同一个开发机器上的一个单独的vagrant实例中运行)。

foo想要从bar获取数据的两部分“技巧”是:

1)每个Vagrant文​​件都需要一行:

config.vm.network :private_network, ip: PVT_NETWORK

其中PVT_NETWORK是本地IP,每个Vagrant文​​件都不同,并且可能需要位于同一子网中。例如,PVT_NETWORK可能是192.168.50.50(foo)和192.168.50.51(bar)

2)foo通过PVT_NETWORK IP地址访问bar 您将在网络浏览器中使用的“真实”IP。

在我的Rails示例中,我还让每个应用程序在不同的端口上运行,因此foo位于localhost:3000上,bar位于localhost:3001上,因此foo将访问bar上的网址

http://192.168.50.51:3001/some_url

答案 1 :(得分:0)

如果两台服务器位于同一网络中且它们之间没有ACL(本地方框),则在配置网络后,它们可以相互通信。

配置vagrant文​​件:

# Disable automatic box update checking. If you disable this, then
# boxes will only be checked for updates when the user runs
# `vagrant box outdated`. This is not recommended.
# config.vm.box_check_update = false

# Create a forwarded port mapping which allows access to a specific port
# within the machine from a port on the host machine. In the example below,
# accessing "localhost:8080" will access port 80 on the guest machine.
# config.vm.network "forwarded_port", guest: 80, host: 8080

# Create a private network, which allows host-only access to the machine
# using a specific IP.
# config.vm.network "private_network", ip: "192.168.33.10"

# Create a public network, which generally matched to bridged network.
# Bridged networks make the machine appear as another physical device on
# your network.
# config.vm.network "public_network"