2014-10-21 13 views
9

Çok makineli bir Vagrant kurulumuna sahibim. NFS ve private_network'u kullanarak İhtiyacım olan herşeyi (Drupal, PHP, vb.) Halledebilirim. Birisinin, sanal makinemde çalışan bir web uygulamasını ziyaret etmesine izin vermekteyim. private_network'un harici dünyadaki VM'lere bağlanmasının imkansız olduğunu anlıyorum.NFS ve private_network kullanırken Vagrant VM'yi ağa maruz bırakma

Hem özel bir VE genel ağ oluşturmanın bir yolu var, böylece tüm VMS yük dengeleyicinin HARİCİ olduğunu ve yük dengeleyiciye ana bilgisayarın ipinden erişilebilsin mi?

hosts = { 
    "wloadlocal" => "192.168.33.10", 
    "wweblocal1" => "192.168.33.11", 
    "wweblocal2" => "192.168.33.12", 
    "wwhlocal" => "192.168.33.13", 
} 

Vagrant.configure("2") do |config| 
    hosts.each do |name, ip| 
    config.vm.define name do |machine| 
     machine.vm.box = "precise32" 
     machine.vm.box_url = "http://files.vagrantup.com/precise32.box" 
     machine.vm.hostname = "%s.example.org" % name 
     machine.vm.network :private_network, ip: ip 
     machine.vm.network "public_network" 
     machine.vm.provider "virtualbox" do |v| 
      v.name = name 
      v.customize ["modifyvm", :id, "--memory", 200] 
     end 
     if name == "wloadlocal" 
     machine.vm.network "forwarded_port", guest: 80, host: 8880 
     end 
    end 
    #sync folders 
    config.vm.synced_folder "~/data", "/data", type: "nfs" 
    end 
end 

Düzenleme 1. Serseri en çok VirtualBox ve NFS kullanırken private_network kullanması gerektiğini bildiren NFS doc page günü

: Eğer VirtualBox sağlayıcısı kullanıyorsanız

, ayrıca gerekir emin olmak için özel bir ağınız var. Bunun nedeni, VirtualBox'un yerleşik ağının bir sınırlamasıdır. VMware ile buna ihtiyacınız yok.

Performans nedenleriyle NFS kullanmam gerekiyor, ancak sanal makinelerde çalışan uygulamaları gerektiğinde yerel ağ üzerinden paylaşabilmek istiyorum. Mümkün mü?

+10

P.S. Tüm yakınlara: Vagrant bir _dev_ aracıdır, bir ağ/sysadmin aracı değildir. Amacı, devlerin, ekibinizdeki tüm devler için aynı şekilde çalışan VM tarifleri oluşturmasını sağlamaktır. –

+5

Vagrant'ın bir API'si varken, iç ağın OP'nin istediği şekilde nasıl ayarlanacağı [su] 'ya daha iyi uyum sağlayabilir. Bu konfigürasyon biliniyorsa, kod içine koymak kolay olmalıdır. OP'lerin sorusuna doğru, iki tür ağı dahili olarak oluşturabileceğinizi düşünmüyorum. –

+2

Sanırım bu siteler arasındaki sıçrayan şey saçmalanıyor. Soruyu olsun. Vagrant konfigürasyonlarını yapmak Süper Kullanıcı kapsamında değildir. – eis

cevap

2

Bunun etrafında bulabildiğim en basit yol, yorumlardan birinde belirtildiği gibi birden çok ağ kullanmaktı. Yani benim yapılandırma bu gibi bakarak biter:

config.vm.define :host01 do |host01| 
    postgres01.vm.network :private_network, ip: '192.168.37.2' 
    config.vm.network "public_network" 
    host01.vm.hostname = 'host01' 
    configure_vm(host01) 
    end 

Sonra benim ağda 192.168.0.102 olmak sona eren kamu ip bakmak için vagrant ssh host01 yaptı. Artık bu ipe ana bilgisayarımdan erişebiliyorum. Genel ağ özelliğini kullanmak için bazı caveats olduğunu unutmayın.