Reputation: 15143
Let's say I make two vagrant boxes, foo
and bar
:
$ mkdir -p foo bar
$ pushd foo; vagrant init hashicorp/precise32; vagrant up; popd
$ pushd bar; vagrant init hashicorp/precise32; vagrant up; popd
Now let's say I start an HTTP server on foo
:
$ cd foo
$ vagrant ssh -c 'python -m SimpleHTTPServer 8080
My question is, how can I get bar
to communicate (e.g. via curl
) with foo
?
$ cd bar
$ vagrant ssh -c 'curl http://????'
Upvotes: 1
Views: 2221
Reputation: 19247
Although the question does not make it clear, I think this older question is asking:if the *same* development machine is running two vagrant instances, how can an app running on
foofetch data from a url on
bar`.
If so, I ran into this recently for my two Rails apps(each running in a separate vagrant instance on the same development machine).
The two-part 'trick' if foo
wants to fetch data from bar
, is:
1) each Vagrant files needs a line:
config.vm.network :private_network, ip: PVT_NETWORK
where PVT_NETWORK is a local IP, is different for each Vagrant file, and probably needs to be in the same subnet. For example PVT_NETWORK might be 192.168.50.50 (foo) and 192.168.50.51 (bar)
2) foo
accesses bar
via the PVT_NETWORK IP address not the "real" IP you would use with a web browser.
In my Rails example, I also have each app running on a different port, so foo
is on localhost:3000 and bar
is on localhost:3001, so foo
would access a url on bar
via
http://192.168.50.51:3001/some_url
Upvotes: 2
Reputation: 2661
If the two servers are in the same network and no ACL between them (local boxes) they can communicate with each other after configuring the network.
configure the vagrant file:
# 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"
Upvotes: 0