【问题标题】:Vagrant public network not reachable?Vagrant 公共网络无法访问?
【发布时间】:2015-04-02 13:48:30
【问题描述】:

我正在尝试将 vagrant 用于我的家庭网络上的分布式项目。这是我在每台主机上使用的 Vagrantfile(总共 3 台机器):

# -*- 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 设置正确。问题是,如果我尝试以任何方式联系它,它似乎无法访问,即使来自同一台主机!换句话说,尝试从主机的 shell 中ping 的 IP 地址,客户机没有响应。

【问题讨论】:

  • 主机通常是指虚拟机运行的主机。因此,如果我有一台带有 3 个运行 Ubuntu 的虚拟机的 Windows7 笔记本电脑,那么我会说我有一个 Windows7 主机,上面运行着 3 个虚拟机/来宾,所以我有点不确定你的最后一句话是什么意思。

标签: vagrant virtual-machine


【解决方案1】:

看起来您只是将hal9000 VM 设置为使用公共(或桥接)网络(或实际上进行任何配置),因此其他客人只是使用默认的仅主机网络,这应该意味着他们只与主机有连接,彼此之间没有连接。

如果你取出:

if key == "hal9000"

行那么它应该正确配置。

但是,除非您真的希望机器面向 Web,否则这些虚拟机都应该位于专用网络中,通过取消注释您已经拥有的专用网络线路,该专用网络应该可以工作。

【讨论】:

  • 如果我将网络设置为私有网络,则它不能从网络的其余部分 ping(因此我推断可见),只能由本地主机执行。但是,查看关于私有网络与公共网络的 vagrant 部分有很多困惑,我认为答案不是唯一的
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-02-08
  • 2016-01-16
  • 1970-01-01
  • 2021-06-19
  • 2022-10-24
  • 2014-10-29
  • 2022-10-19
相关资源
最近更新 更多