Как заставить два бродячих ящика разговаривать друг с другом?

Допустим, я делаю две бродячие коробки, foo а также bar:

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

Теперь допустим, что я запускаю HTTP-сервер на foo:

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

Мой вопрос, как я могу получить bar общаться (например, через curl) с foo?

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

2 ответа

Хотя вопрос не проясняет, я думаю, что этот старый вопрос задает:if the *same* development machine is running two vagrant instances, how can an app running onFoofetch data from a url onbar`.

Если это так, я столкнулся с этим недавно для моих двух приложений Rails (каждое из которых запущено в отдельном бродячем экземпляре на одной машине разработки).

Двухсторонний трюк, если 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 доступ bar через IP-адрес PVT_NETWORK, а не "реальный" IP, который вы бы использовали в веб-браузере.

В моем примере с Rails у меня также есть каждое приложение, работающее на другом порту, поэтому foo находится на локальном хосте:3000 и bar находится на локальном хосте:3001, так foo будет иметь доступ к URL на bar с помощью

http://192.168.50.51:3001/some_url

Если два сервера находятся в одной сети и между ними нет 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"
Другие вопросы по тегам