Vagrant public 网络不可达?
Vagrant public network not reachable?
我正在尝试将 vagrant 用于家庭网络上的分布式项目。这是我在每台主机(总共 3 台机器)上使用的 Vagrantfile:
# -*- mode: ruby -*-
# # vi: set ft=ruby :
# Specify minimum Vagrant version and Vagrant API version
Vagrant.require_version ">= 1.6.0"
VAGRANTFILE_API_VERSION = "2"
# Require YAML module
require 'yaml'
# Read YAML file with box details
servers = YAML.load_file('RaftFS/servers.yaml')
# Create boxes
Vagrant.configure(VAGRANTFILE_API_VERSION) do |config|
# Create servers
# Iterate through entries in YAML file
servers.each do |key,value|
#the line below will be different on each machine
if key == "hal9000"
config.vm.define key do |srv|
srv.vm.box = value['box']
#srv.vm.network "private_network", ip: value['ip']
srv.vm.network :public_network, ip:value['ip']
srv.vm.hostname=key
srv.vm.synced_folder ".", "/vagrant" , disabled:true
srv.vm.synced_folder "ServersFS/"+key+"/", "/vagrant/ServersFS" , create: true
srv.vm.synced_folder "./RaftFS", "/vagrant/RaftFS"
srv.vm.provision :shell do |shell|
shell.path = "provision.sh"
shell.args = "'TRUE'"
end
srv.vm.provider :virtualbox do |vb|
vb.name = key
vb.memory = value['ram']
end
end
end
end
end
这是 servers.yaml:
jarvis:
box: hashicorp/precise32
ram: 512
ip: 192.168.1.200
ftpPort: 8080
diskSpace: 500
skynet:
box: hashicorp/precise32
ram: 512
ip: 192.168.1.201
ftpPort: 8081
diskSpace: 500
hal9000:
box: hashicorp/precise32
ram: 512
ip: 192.168.1.202
ftpPort: 8083
diskSpace: 500
现在,如果我 ssh
每台机器和 运行 ifconfig
IP 设置正确。问题是,如果我尝试以任何方式联系它,它似乎无法访问,即使是来自同一台主机!换句话说,试图ping
主机shell的IP地址,来宾机器没有响应。
您似乎只是将 hal9000
VM 设置为使用 public(或桥接)网络(或实际上进行任何配置),因此其他来宾仅使用默认设置host only network 这应该意味着它们只能连接到主机而不是彼此。
如果你取出:
if key == "hal9000"
行然后它应该正确配置。
但是,除非您真的希望机器面向网络,否则这些 VM 都应该位于专用网络中,这应该通过取消注释您已经存在的专用网络线路来工作。
我正在尝试将 vagrant 用于家庭网络上的分布式项目。这是我在每台主机(总共 3 台机器)上使用的 Vagrantfile:
# -*- mode: ruby -*-
# # vi: set ft=ruby :
# Specify minimum Vagrant version and Vagrant API version
Vagrant.require_version ">= 1.6.0"
VAGRANTFILE_API_VERSION = "2"
# Require YAML module
require 'yaml'
# Read YAML file with box details
servers = YAML.load_file('RaftFS/servers.yaml')
# Create boxes
Vagrant.configure(VAGRANTFILE_API_VERSION) do |config|
# Create servers
# Iterate through entries in YAML file
servers.each do |key,value|
#the line below will be different on each machine
if key == "hal9000"
config.vm.define key do |srv|
srv.vm.box = value['box']
#srv.vm.network "private_network", ip: value['ip']
srv.vm.network :public_network, ip:value['ip']
srv.vm.hostname=key
srv.vm.synced_folder ".", "/vagrant" , disabled:true
srv.vm.synced_folder "ServersFS/"+key+"/", "/vagrant/ServersFS" , create: true
srv.vm.synced_folder "./RaftFS", "/vagrant/RaftFS"
srv.vm.provision :shell do |shell|
shell.path = "provision.sh"
shell.args = "'TRUE'"
end
srv.vm.provider :virtualbox do |vb|
vb.name = key
vb.memory = value['ram']
end
end
end
end
end
这是 servers.yaml:
jarvis:
box: hashicorp/precise32
ram: 512
ip: 192.168.1.200
ftpPort: 8080
diskSpace: 500
skynet:
box: hashicorp/precise32
ram: 512
ip: 192.168.1.201
ftpPort: 8081
diskSpace: 500
hal9000:
box: hashicorp/precise32
ram: 512
ip: 192.168.1.202
ftpPort: 8083
diskSpace: 500
现在,如果我 ssh
每台机器和 运行 ifconfig
IP 设置正确。问题是,如果我尝试以任何方式联系它,它似乎无法访问,即使是来自同一台主机!换句话说,试图ping
主机shell的IP地址,来宾机器没有响应。
您似乎只是将 hal9000
VM 设置为使用 public(或桥接)网络(或实际上进行任何配置),因此其他来宾仅使用默认设置host only network 这应该意味着它们只能连接到主机而不是彼此。
如果你取出:
if key == "hal9000"
行然后它应该正确配置。
但是,除非您真的希望机器面向网络,否则这些 VM 都应该位于专用网络中,这应该通过取消注释您已经存在的专用网络线路来工作。