2015-04-02 63 views
0

我正在嘗試在我的家庭網絡上使用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設置正確。問題是,如果我嘗試以任何方式聯繫它,它甚至從同一臺主機上無法訪問!換句話說,試圖從主機的外殼嘗試到IP地址ping,來賓機器沒有響應。

+0

主機通常表示虛擬機正在運行的主框。因此,如果我有一臺裝有3臺運行Ubuntu的Windows 7筆記本電腦,那麼我會說我擁有一臺裝有3臺虛擬機/客戶機的Windows7主機,所以我有點不確定你最後一句話的含義。 – ydaetskcoR 2015-04-02 15:24:11

回答

0

它看起來像你只設置hal9000虛擬機使用公共(或橋接)網絡(或實際上做任何配置),所以其他客人只使用默認的主機唯一的網絡,這應該意味着他們只是有連接到主機而不是彼此。

如果取出:

if key == "hal9000" 

線,那麼它應該正確配置的東西。

但是,除非您真的希望機器面向這些虛擬機,否則這些虛擬機應該全部位於專用網絡中,通過取消註釋您已有的專用網絡線路來實現這一功能。

+0

如果我將網絡設置爲私有網絡,則它只能由本地主機從網絡的其餘部分無法ping(因此我推斷可見)。然而,看起來關於私人網絡和公共網絡的流浪部分存在很多混淆,我認爲答案並不是唯一的 – justHelloWorld 2015-04-03 16:48:39