2014-07-10 6 views
7

मेरे पर्यावरण:Vagrant हर बार मैं आवारा का उपयोग .vagrant निर्देशिका रीसेट करता है

  • ओएस: win8.1
  • Vagrant: 1.6.3
  • आभासी बॉक्स: 4.3.12r93733
  • Vagrant ओएस: laravel/Homestead स्वाद

स्थिति: मैं देखा है कि के बाद एक "आवारा निलंबित" और कंप्यूटर पुन: प्रारंभ (अगले दिन ' काम करता है) जब मैं "अपरिवर्तित" चलाता हूं तो .vagrant निर्देशिका में सभी फाइलें "अप" प्रक्रिया के दौरान हटा दी जाती हैं और एक नया VBox इंस्टेंस बनाया जाता है। इसका मतलब है कि मैं अपनी पिछली कॉन्फ़िगरेशन जैसे डीबी, एनपीएम इंस्टॉल और माउंट्स खो देता हूं। हां खोया कॉन्फ़िगरेशन ज्यादातर सहेजे गए स्क्रिप्ट के माध्यम से उपलब्ध है, लेकिन यह हर बार करने के लिए एक असली दर्द है!

मेरा वर्तमान फ़िक्स: वर्तमान में प्रत्येक बार ऐसा होता है कि मुझे सही आईडी पुनर्प्राप्त करने के लिए "VBoxManage सूची vms" चलाने की आवश्यकता है। मैं फिर नए अवांछित उदाहरण "योनेंट निलंबित" करता हूं, इसे ओरेकल वीएम वर्चुअलबॉक्स से हटाएं, पुरानी आईडी को "आईडी" फ़ाइल में ".vagrant" में पेस्ट करें और फिर "योनेंट अप" चलाएं। इस बार यह काम करता है!

मैंने "योनेंट अप" चलाने से पहले प्रत्येक बार आईडी फ़ाइल की जांच की है और सही आईडी वहां है। मैंने "वानर रेज़्यूमे" भी कोशिश की है लेकिन इससे कोई फर्क नहीं पड़ता है।

वॅग्रेंटफाइल और कॉन्फ़िगरेशन फ़ाइल लगभग मानक हैं जो होमस्टेड पैकेज के साथ आता है। मैंने जो एकमात्र परिवर्तन किया है वह Vagrantfile के भीतर सिम्लिंक की अनुमति देने के लिए है (यह NODE, npm और windows सीमाओं के साथ 260 char निर्देशिका पथों के साथ पूरी तरह से अलग समस्या के लिए एक काम है)। इस डीआईआर लंबाई के मुद्दे के लिए मैंने जो अतिरिक्त जोड़ा है, वह यहां दिया गया है।

config.vm.provider "virtualbox" do |vb| 
# SEE https://github.com/fideloper/Vaprobash/issues/183 
vb.customize ["setextradata", :id, "VBoxInternal2/SharedFoldersEnableSymlinksCreate/vagrant", "1"] 
end 

मैं क्या गलत कर रहा हूं? हर बार एक नया वीएम उदाहरण क्यों बना रहा है?

अद्यतन:

मुझे पता चला है कि इस मुद्दे को व्यवस्थापक विशेषाधिकारों के साथ CLI (मैं आम तौर पर cygwin का उपयोग करें) और दैवज्ञ VBox प्रबंधक चल रहा है के साथ कुछ है। मैंने यह भी पाया है कि मेरे कुछ वीएम सी: \ cygwin64 \ home के अंतर्गत सहेजे गए हैं ... मैं साइगविन टर्मिनल को व्यवस्थापक के रूप में चलाने के दौरान उन लोगों का उपयोग कर सकता हूं। और मैं उन्हें ओरेकल वर्चुअलबॉक्स प्रबंधक में देख सकता हूं यदि मैं इसे व्यवस्थापक के रूप में भी चलाता हूं। अन्य वीएम को C: \ Users .... में संग्रहीत किया जाता है और मैं उन लोगों को देख सकता हूं जब ऑरैक VBox प्रबंधक को मेरे सामान्य उपयोगकर्ता (जिनके पास व्यवस्थापकीय विशेषाधिकार हैं) के रूप में चल रहा है।

मैं अभी भी थोड़ा उलझन में हूं कि यह सब कैसे हुआ है।

+0

यह मेरे प्रश्न के लिए एक टक्कर है। मेरे पास अभी भी एक ही समस्या है, किसी के पास कोई विचार है? – Wairowe

उत्तर

2

मैं अपने समस्या का जवाब मिल गया में अधिक जानकारी जोड़ उम्मीद है कि, यह

यहाँ मेरी Vagranfile है दूसरों की मदद करो।

यह मुद्दा मेरे सी:/cygwin64/home निर्देशिका में कुछ वीएम बैठा था, और वे व्यवस्थापक से संबंधित थे, अगर वे इसे "व्यवस्थापक के रूप में" खोलते हैं तो वे ओरेकल वर्चुअलबॉक्स प्रबंधक पर भी देखे जा सकते हैं। अन्य वीएम सी में थे:/उपयोगकर्ता/[उपयोगकर्ता नाम]/वर्चुअलबॉक्स वीएम, वे मेरे उपयोगकर्ता खाते के स्वामित्व में थे और केवल तभी देखा जा सकता था जब मैंने सामान्य रूप से ऐप्स खोले।

मैं सामान्य रूप से अपना सिगविन खोल रहा था और इसलिए वीएम बैक अप को ठीक से लाने में सक्षम नहीं था (फिर भी थोड़ा उलझन में आईडी को रीसेट करने का हर बार क्यों काम करना पड़ा)।

मेरे समाधान: इस जवाब की मदद से thomthom

द्वारा दैवज्ञ VirtualBox mangager के भीतर मैं सेल्सियस के लिए डिफ़ॉल्ट मशीन फ़ोल्डर (फ़ाइल> वरीयताएँ-> सामान्य) बदल दिया है:/उपयोगकर्ताओं/[उपयोगकर्ता नाम]/VirtualBox VMs । मैंने फिर प्रत्येक वीएम को क्लोन किया ताकि वे नई निर्देशिका में समाप्त हो जाएं। मैंने तब पुराने वीएम (दाएं क्लिक -> निकालें) को पूरी तरह से हटा दिया जो सिग्विन फ़ोल्डर में बैठे थे। मैं तो Cygwin और VirtualBox के प्रबंधक बंद कर दिया और के रूप में एक सामान्य उपयोगकर्ताओं को फिर से खोल (VirtualBox के प्रबंधक कुछ भी नहीं दिख रहा था!) ​​

अंत में मैं नई निर्देशिका और डबल प्रत्येक वीएम क्लिक किया में चला गया तो यह VirtualBox के प्रबंधक में वापस जोड़ दिया गया है, तो , कमांड लाइन के लिए मैंने क्लोन की नई आईडी प्राप्त करने के लिए VBoxManage सूची vms चलाया, उस आईडी को मेरी प्रोजेक्ट के भीतर आईडी फ़ाइल में कॉपी किया (यह प्रोजेक्ट \ .vagrant \ machines \ default \ virtualbox \ id

जैसा कुछ होगा

अब मैं सामान्य उपयोगकर्ता के रूप में साइगविन के साथ "योनेंट अप" कमांड चला सकता हूं और सबकुछ बढ़िया काम करता है।

सबक: बहुत दूर रहें आप जिस प्रारंभिक वीएम रचनाओं को चलाते हैं, उसके बारे में भी, यह भी पता होना चाहिए कि वर्चुअलबॉक्स प्रबंधक आपके वीएम को संग्रहीत कर रहा है।

0

मुझे विन 7 प्रोफेशनल पर समान समस्या है जिसमें वग्रेंट ओएस के बिना समान प्रोग्राम संस्करण हैं: लार्वेल/होमस्टेड स्वाद (मुझे नहीं पता कि यह क्या है)।

लेकिन मेरे पास .vagrant/machines/xxx/virtualbox/id फ़ाइलों में सही आईडी है। जब मैं किसी भी वानर कमांड का उपयोग करता हूं, तो फ़ोल्डर .vagrant/machines/xxx/virtualbox/ से सभी फ़ाइलें हटा दी जाती हैं। लेकिन मेरे लिए वर्चुअलबॉक्स में वर्चुअल मशीन चालू करें और vagrant suspend और vagrant up का उपयोग करें।

Vagrant.require_version '>= 1.6.0' 
SSH_PORT    = 22 
www, services, upload = {}, {}, {} 

# WWW SERVER 
www[:memory]   = 768 # MB 
www[:cpu]    = 1 # num. cpu cores 
www[:cpuTimeCap]  = 100 # 1-100 % 
www[:alias]    = 'www' 
www[:ip]    = '10.11.5.35' 
www[:sshPort]   = 58501    
www[:vboxName]   = 'WWW-name' 
www[:syncedFolder]  = './master-install' 
www[:box]    = 'freebsd9.2' 
www[:boxUrl]   = 'file:///E:/Virtuals/freebsd-9.2-amd64-wunki.box' 
www[:provisions]  = [] 
www[:provisions]  << 'common/install.sh' 
www[:provisions]  << 'master-install/install.sh' 
www[:provisions]  << 'master-install/name-install.sh' 

services[:memory]...etc. 

machines = [www, services, upload] 

Vagrant.configure('2') do |config| 
    machines.each do |machine| 
    config.vm.define "#{machine[:alias]}" do |node| 
     node.vm.box = machine[:box] 
     node.vm.box_url = machine[:boxUrl] 
     node.vm.hostname = machine[:alias] 
     node.vm.network :private_network, :ip => machine[:ip] 
     node.vm.network :forwarded_port, :guest => SSH_PORT, :host => machine[:sshPort], :id => 'ssh', :auto_correct => true 
     node.vm.synced_folder machine[:syncedFolder], "/vagrant", type: "rsync", rsync__exclude: ".git/" 
     node.vm.provider :virtualbox do |vbconf| 
     vbconf.customize ["modifyvm", :id, "--name", machine[:vboxName]] 
     vbconf.customize ["modifyvm", :id, "--memory", machine[:memory]] 
     vbconf.customize ["modifyvm", :id, "--cpus", machine[:cpu]] 
     vbconf.customize ["modifyvm", :id, "--cpuexecutioncap", machine[:cpuTimeCap]] 
     vbconf.customize ["modifyvm", :id, "--natdnsproxy1", "off"] 
     vbconf.customize ["modifyvm", :id, "--natdnshostresolver1", "off"] 
     vbconf.customize ["modifyvm", :id, "--ioapic", "on"] 
     vbconf.customize ["modifyvm", :id, "--chipset", "ich9"] 
     vbconf.customize ["modifyvm", :id, "--usb", "off"] 
     vbconf.customize ["modifyvm", :id, "--audio", "none"] 
     vbconf.customize ["modifyvm", :id, "--nictype1", "virtio"] 
     vbconf.customize ["modifyvm", :id, "--nictype2", "virtio"] 
     vbconf.customize ["modifyvm", :id, "--pae", "on"] 
     vbconf.customize ["modifyvm", :id, "--acpi", "on"] 
     vbconf.customize ["modifyvm", :id, "--firmware", "bios"] 
     end 

     machine[:provisions].each do |provision| 
     node.vm.provision "shell", path: provision 
     end 
    end 
    end 
end 

ps: इस जवाब नहीं है बल्कि समस्या :)

संबंधित मुद्दे