Как заставить два бродячих ящика разговаривать друг с другом?
Допустим, я делаю две бродячие коробки, 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 on
Foofetch data from a url on
bar`.
Если это так, я столкнулся с этим недавно для моих двух приложений 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"