इसे ट्रांसफर करने के लिए वैग्रंट वर्चुअल मशीन को कैसे निर्यात करें


107

मेरे पास एक योनि बॉक्स है और चल रहा है (एक LAMP स्टैक के साथ कॉन्फ़िगर किया गया है)। मुझे इसे दूसरे पीसी पर स्थानांतरित करने की आवश्यकता है। मैं इसे कैसे निर्यात कर सकता हूं? मुझे लगता है कि मैं एक फ़ाइल (या फ़ाइलें) प्राप्त कर सकता हूं जिसे किसी अन्य पीसी पर कॉपी किया जा सकता है, इसलिए मैं योनि बॉक्स को आयात करने के लिए कुछ कमांड चला सकता हूं।


1
मैंने योनि बक्से के हस्तांतरण को स्वचालित करने के लिए कुछ स्क्रिप्ट लिखीं।
सोनिया

//, क्या किसी ने सोनिया की स्क्रिप्ट की कोशिश की है?
नाथन बसानी 21

@NathanBasanese AFAIU, वे स्क्रिप्ट बेस बॉक्स को स्थानांतरित करने में मदद करते हैं, परिणामस्वरूप चलने वाले VMs नहीं, क्योंकि वे आवारा बॉक्स के रीपैकेज का उपयोग करते हैं (इसके डॉक्स देखें)
ओलिवियर बर्जर

जवाबों:


119

आपके पास ऐसा करने के दो तरीके हैं, मैं इसे गंदा तरीका और साफ तरीका कहूंगा :

1. गंदा तरीका

अपने वर्तमान आभासी वातावरण से एक बॉक्स बनाएँ, vagrant packageकमांड का उपयोग करके :

http://docs.vagrantup.com/v2/cli/package.html

फिर बॉक्स को अन्य पीसी पर कॉपी करें, इसे उपयोग करके जोड़ें vagrant box addऔर इसे vagrant upसामान्य रूप से उपयोग करके चलाएं ।

ध्यान रखें कि Vagrantfileवर्चुअल मशीन के बूट होने पर आपकी वर्किंग डायरेक्टरी (एक के साथ ) की फाइलें साझा की जाती हैं, इसलिए आपको इसे दूसरे पीसी पर भी कॉपी करना होगा।

2. साफ रास्ता

सैद्धांतिक रूप से वैग्रांत के साथ निर्यात / आयात करना कभी आवश्यक नहीं होना चाहिए। यदि आपके पास वर्चुअल वातावरण (शेफ, कठपुतली, ansible) को कॉन्फ़िगर करने के लिए प्रोविजनिंग का उपयोग करने की दूरदर्शिता है, और आपके वर्किंग डायरेक्टरी के लिए git जैसा वर्जन कंट्रोल सिस्टम है, तो पर्यावरण की नकल करना इस बिंदु पर सरल होगा:

git clone <your_repo>
vagrant up

5
उस साफ , पूर्वाभासपूर्ण प्रशासक बनने की कोशिश ... आपको अपने git रेपो में OS स्थापित करना नहीं है? क्या आप सुझाव दे रहे हैं, उदाहरण के लिए। ansible का उपयोग करते हुए, आपके रेपो में Vagrantfile और ansible playbook होगी। Vagrantfile 1. डाउनलोड से एक basebox हैं vagrantcloud 2. ansible प्लेबुक प्रावधान / कॉन्फ़िगर करने के लिए basebox अन्य फ़ाइलों / रेपोस / बादल भंडारण का उपयोग कर चलाते हैं। सही? या गिट रेपो में कुछ और है?
हॉब्स

8
डेटाबेस (mySQL, वर्डप्रेस) के लिए "साफ तरीका" खाता है जो vm के अंदर हो सकता है? दूसरे पीसी पर कैसे सिंक किया जा सकता है?
kevllar

1
@kevllar स्वच्छ तरीके का अर्थ यह है कि गिट रिपॉजिटरी के बाहर कोई सूचना नहीं है जो एक नया देव वातावरण शुरू करने के लिए आवश्यक है। तात्पर्य यह है कि डेटाबेस को स्थापित करने और कॉन्फ़िगर करने का कार्य नए आवारा बॉक्स (शेफ / पपेट / व्हाट-है-यू के माध्यम से) के प्रावधान के दौरान पूरा किया जाएगा।
होविस बिडल

2
तो क्या हाशिकॉर्प द्वारा अनुशंसित तरीका भी 'गंदा' है? यानी बॉक्स को पैकेज करें और इसे एटलस सर्वर पर अपलोड करें? मुझे यकीन नहीं है कि अगर 'स्वच्छ' तरीका वास्तव में सटीक वातावरण को
दोहराएगा

1
मुझे समझ नहीं आ रहा है कि कैसे सरकारी तरीके को गंदा माना जाता है। कोई भी अच्छी आत्मा समझा सकती है क्यों?
thclpr

28

मेरे मैक में मेरी हार्ड ड्राइव एक प्रोजेक्ट के बीच में शोर मचा रही थी इसलिए मैंने एसएसडी स्थापित करने का फैसला किया। मुझे अपने प्रोजेक्ट को एक डिस्क से दूसरे डिस्क पर ले जाने की आवश्यकता थी। विचार करने के लिए कुछ बातें:

  • मैं एक पर w / virtualbox योनि हूँ
  • मैं git का उपयोग कर रहा हूं

इसी से मेरा काम बना है:

1.) Copy your ~/.vagrant.d directory to your new machine.
2.) Copy your ~/VirtualBox\ VMs directory to your new machine. 
3.) In VirtualBox add the machines one by one using **Machine** >> **Add**
4.) Run `vagrant box list` to see if vagrant acknowledges your machines. 
5.) `git clone my_project`
6.) `vagrant up`

मुझे VB गेस्ट एडिशन के साथ कुछ समस्याएँ थीं।

यहां छवि विवरण दर्ज करें

मैंने उन्हें इस समाधान के साथ तय किया ।


//, मैं यह कोशिश करने जा रहा हूं, @KJPrince। हमारे लिए इसे तोड़ने के लिए धन्यवाद।
नाथन बसानी

//, मैं इसे करने की कोशिश की, लेकिन जब मैं ~ / VirtualBox \ VMs के लिए खत्म हो मेरी VirtualBoxVMs निर्देशिका में कॉपी मैं दिए गए लिंक पर त्रुटियों हो गया, और भाग गया vagrant box list: 0bin.net/paste/iCiaqNhU-i3bbfY2#-KDiXYcRFni1RNgNJhOBrIs/...
नाथन बसानी 21

18

यह वास्तव में बहुत सरल है

  1. रिमोट मशीन पर वर्चुअल बॉक्स और योनि स्थापित करें
  2. अपनी योनि मशीन को लपेटें

    vagrant package --base [machine name as it shows in virtual box] --output /Users/myuser/Documents/Workspace/my.box

  3. बॉक्स को अपने रिमोट पर कॉपी करें

  4. अपने रिमोट मशीन पर बॉक्स को चलाकर प्रवेश करें

    vagrant init [machine name as it shows in virtual box] /Users/myuser/Documents/Workspace/my.box

  5. Daud vagrant up


1
यदि आपकी मशीन का नाम लंबा है और आप Virtualbox GUI को देखने के लिए बहुत आलसी हैं और यह नाम या id टाइप करें - आप अपने सभी वीएम के नामों और आईडी को इस टर्मिनल कमांड के साथ सूचीबद्ध कर सकते हैं VBoxManage list vms:। के बाद आप सिर्फ कॉपी कर सकते हैं और @Phil 2 और 4th चरणों में बताया गया है। :) यय।
सिड

@ यह क्यों नहीं सिर्फ $ योनि बॉक्स सूची
केन रतनचाई एस।

@KenRatanachaiS क्योंकि आपकी कमांड बॉक्स को सूचीबद्ध करती है, जैसे: ( scotch/box (virtualbox, 3.0))। मेरे आदेश - पहचानकर्ता के साथ आभासी मशीनें, उदाहरण के लिए:"Win10 - SandBox" {bc251c06-501f-4c0f-bgfa-21f2815ba2cd}
सिड

6

सबसे आसान तरीका वैग्रेंट बॉक्स को पैकेज करना होगा और फिर इसे दूसरे पीसी पर कॉपी (जैसे scpया rsync) करना होगा; इसे जोड़ना vagrant up;-)

विस्तृत चरणों के लिए, यह जांचें => कि क्या पहले से स्थापित एक योनि बॉक्स को क्लोन करने का कोई तरीका है


2

उपरोक्त में से किसी भी उत्तर ने मेरे लिए काम नहीं किया। मुझे एक कंप्यूटर से दूसरे कंप्यूटर पर वैग्रांट + वर्चुअलबॉक्स मशीन को स्थानांतरित करने के लिए 2 दिन काम कर रहे हैं ... यह संभव है!

सबसे पहले, आपको यह समझने की आवश्यकता है कि वर्चुअल मशीन आपके सिंक / साझा फ़ोल्डर से अलग हो गई है। इसलिए जब आप अपनी मशीन को पैक कर रहे हैं तो आप इसे अपनी फ़ाइलों के बिना पैक कर रहे हैं, लेकिन डेटाबेस के साथ।

आपको क्या करने की आवश्यकता है:

1- अपने कंप्यूटर के CMD को खोलें 1 होस्ट मशीन (कमांड लाइन। इसे राइट बटन के साथ एडमिनिस्ट्रेटर के रूप में खोलें -> "एडमिनिस्ट्रेटर के रूप में चलाएं") और अपनी योनि में स्थापित फाइलों पर जाएं। मेरे मामले में: C: / VVV आप अपने Vagrantfile को इन फ़ोल्डरों में भी देखेंगे:

/config/
/database/
/log/
/provision/
/www/
Vagrantfile
...

/ Www / फ़ोल्डर वह जगह है जहाँ मेरे पास मेरा सिंक फोल्डर मेरे विकास डोमेन के साथ है। आपके पास अपना सिंक फ़ोल्डर दूसरी जगह हो सकता है, बस यह समझना सुनिश्चित करें कि आप क्या कर रहे हैं। इसके अलावा / config और / database सिंक फ़ोल्डर हैं।

2- इस कमांड को चलाएं: vagrant package --vagrantfile Vagrantfile

(यह कमांड आपके Vagrantfile कॉन्फ़िगरेशन का उपयोग करके आपकी वर्चुअल मशीन का एक पैकेज करता है।)

यहाँ आप कमांड के बारे में वैग्रांट डॉक्यूमेंटेशन पर क्या पढ़ सकते हैं:

एक आम गलतफहमी यह है कि --vagrantfile विकल्प एक Vagrantfile को पैकेज करेगा जिसका उपयोग तब किया जाता है जब इस बॉक्स के साथ योनि init का उपयोग किया जाता है। यह मामला नहीं है। इसके बजाय, एक Vagrantfile को लोड किया जाता है और बॉक्स के उपयोग किए जाने पर Vagrant लोड प्रक्रिया के भाग के रूप में पढ़ा जाता है। अधिक जानकारी के लिए, वैग्रांटफाइल लोड ऑर्डर के बारे में पढ़ें।

https://www.vagrantup.com/docs/cli/package.html

जब आप सुरक्षित होंगे, तो आपके पास एक पैकेज.बॉक्स फ़ाइल होगी।

3- इन सभी फाइलों (/ config, / database, Vagrantfile, package.box, आदि) को कॉपी करें और अपने कंप्यूटर 2 पर पेस्ट करें जहाँ आप अपनी वर्चुअल मशीन स्थापित करना चाहते हैं (मेरे मामले D: / VVV पर)।

अब आपके पास आपके कंप्यूटर 2 होस्ट पर आपकी ज़रूरत की सभी चीज़ों की एक प्रति है।

4- इसे चलाएं: vagrant box add package.box --name VVV

(The-name का उपयोग आपकी वर्चुअल मशीन को नाम देने के लिए किया जाता है। मेरे मामले में इसका नाम VVV है) (आप उपयोग कर सकते हैं - यदि आपके पास पहले से ही इस नाम की कोई वर्चुअल मशीन है और इसे अधिलेखित करना चाहते हैं!) (ध्यान से उपयोग करें!)।

यह आपकी नई योनि वर्चुअल मशीन को खोल देगा।

5- जब ग्रुपेड, रन: vagrant up

मशीन स्थापित हो जाएगी और आपको इसे "ओरेकल वर्चुअल मशीन बॉक्स मैनेजर" पर देखना चाहिए। यदि आप वर्चुअल मशीन नहीं देख सकते हैं, तो Oracle VM बॉक्स को व्यवस्थापक के रूप में चलाने का प्रयास करें (राइट क्लिक करें -> व्यवस्थापक के रूप में चलाएँ)

अब आपके पास सबकुछ ठीक हो सकता है, लेकिन यह देखना याद रखें कि क्या आपके मेजबान उम्मीद के मुताबिक हैं:

c:/windows/system32/hosts

6- हो सकता है कि अपने कंप्यूटर 1 से अपने कंप्यूटर पर अपनी होस्ट फ़ाइल को कॉपी करना एक अच्छा विचार हो । मेरे मामले में ये मेजबान हैं जिनकी मुझे आवश्यकता है:

192.168.50.4 test.dev
192.168.50.4 vvv.dev
...

जहां 192.168.50.4 मेरी वर्चुअल मशीन का IP है और test.dev और vvv.dev मेजबान विकसित कर रहे हैं।

मुझे आशा है कि यह आपकी मदद कर सकता है :) यदि आप अपने जाने पर प्रतिक्रिया देते हैं तो मुझे खुशी होगी।

मेरे मामले की कुछ विशिष्टताएँ जो आपको मिल सकती हैं:

जब मैं भाग गया, वहाँ mysql के साथ एक समस्या थी, यह काम नहीं कर रहा था। मुझे वर्चुअल सर्वर पर चलना था (ओरेकल वर्चुअल मशीन पर राइट क्लिक करें -> कंसोल दिखाएं):apt-get install mysql-server

इसके बाद, मैं फिर से भाग गया और सब कुछ काम कर रहा था लेकिन डेटाबेस पर डेटा के बिना। इसलिए मैंने कंप्यूटर 1 से एक mysqldump ऑल-टेबल किया और उन्हें कंप्यूटर 2 पर अपलोड किया।

अन्य नोट: मेरी वर्चुअल मशीन बिल्कुल कंप्यूटर 1 और कंप्यूटर 2 पर नहीं है। उदाहरण के लिए, मैंने NFS का उपयोग करने के लिए कुछ समय पहले आंतरिक कॉन्फ़िगरेशन किया (सर्वर सिंक फ़ोल्डर्स को तेज करने के लिए) और मुझे कंप्यूटर 2 पर फिर से इस कमांड को चलाने की आवश्यकता थी। मेज़बान:vagrant plugin install vagrant-winnfsd


1

जैसा कि इसमें घोषित किया गया है

मैं कैसे बदल सकता हूं जहां वैगरेंट अपनी वर्चुअल हार्ड ड्राइव के लिए दिखता है?

वर्चुअल-मशीन स्थिति एक पूर्वनिर्धारित VirtualBox फ़ोल्डर में संग्रहीत है। अपनी मशीन-फ़ोल्डर (फ़ोल्डर) को अपने अन्य होस्ट के लिए योनि-प्रोजेक्ट के अलावा कॉपी करना आपकी वर्चुअल मशीन स्थिति को संरक्षित करना चाहिए।


0

2019 तक एक उपकेंद्र है: vagrant box repackage

vagrant box repackage --help 
Usage: vagrant box repackage <name> <provider> <version>
    -h, --help                       Print this help

आप पा सकते हैं name providerऔर versionदौड़करvagrant box list

vagrant box list
macinbox (virtualbox, 10.14.5)

की ouput vagrant box repackageएक फाइल है जिसे package.boxमूल रूप से एक tgz फाइल कहा जाता है जिसे सामग्री नीचे सूचीबद्ध की जा सकती है:

tar tzf package.box
./metadata.json
./box.ovf
./Vagrantfile
./box-disk001.vmdk
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.