मुझे केवल VirtualBox के बजाय वैग्रंट का उपयोग क्यों करना चाहिए?


230

मैं एक विकास वातावरण बनाने के लिए कई वर्षों से वर्चुअलबॉक्स का उपयोग कर रहा हूं।

मेरे बहुत सारे सहकर्मी वैग्रंट के बारे में बात कर रहे हैं और बहुत से लोग इसके बारे में बहुत उत्साहित हैं, लेकिन मैं इसके लाभों को समझ नहीं पा रहा हूँ .. मुझे ऐसा लगता है कि इसे करने के लिए सीखने के लिए नए आदेशों की एक श्रृंखला है। मैंने वर्चुअलबॉक्स के साथ काम किया।

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

कठपुतली और रसोइया वास्तव में वैग्रांत का हिस्सा नहीं हैं, वे अपनी बात सही हैं?

तो हाँ, क्या लाभ विशेष रूप से अपने आप पर VirtualBox से अधिक की पेशकश करता है?


11
अब मैं विकास के लिए हर दिन वैग्रंट का उपयोग कर रहा हूँ - यह बहुत अच्छा है! मेरी टीम इसका उपयोग करती है और यह हमारे देव पर्यावरण मुद्दों को हल करती है।
जॉन हंट

1
यहाँ राय दी गई है: यदि आपको कभी भी पीएक्सई सर्वर स्थापित करने में कोई परेशानी नहीं हुई, तो VBoxManage को दिल से जानिए, एक मिनट से भी कम समय में एनएफएस कैसे सेटअप करें आदि जानें और सीधे बिल्ड चेन का प्रबंधन करना भी पसंद करें .. इसका कोई मतलब नहीं है। आपके द्वारा गुम की गई पहेली के प्रत्येक भाग के साथ मान ऊपर जाता है। व्यापक उपयोग कठपुतली एकीकरण से नहीं है, लेकिन क्योंकि लोग सुरक्षा छेद वाली छवियों को इंटरनेट से दूर कर सकते हैं। कोई फर्क नहीं पड़ता कि वे आपको क्या बताते हैं।
फ्लोरियन हीगल

2
3.5 साल और मैं अब हर दिन विकास के लिए डॉक का उपयोग करता हूं। यह अच्छा है, लेकिन योनि के लिए एक अलग जानवर ... आपकी आवश्यकताओं के आधार पर मेरा मानना ​​है कि योनि अभी भी टीमों के लिए एक बेहतर विकास मंच है - इसके साथ काम करना बहुत आसान है।
जॉन हंट

5
4 साल और मैंने पाया है कि डॉक भयानक है। लंबे समय तक वैग्रांत।
जॉन हंट

3
आपकी टिप्पणियाँ इसे और अधिक मज़ेदार बना रही हैं
फ्लोरियन हीगल

जवाबों:


151

यह एक बड़ा सवाल है, इसलिए मैं इसे तीन खंडों में विभाजित करने जा रहा हूं।

आवारा

Vagrant का उपयोग एक या अधिक आभासी मशीनों को सेट करने के लिए किया जाता है:

  • पूर्व-निर्मित छवियां आयात करना ("बॉक्स" कहा जाता है)
  • VM- विशिष्ट सेटिंग (IP पता, होस्टनाम, पोर्ट फ़ॉरवर्डिंग, मेमोरी, आदि) सेट करना
  • कठपुतली या बावर्ची की तरह चल रहे प्रोविजनिंग सॉफ्टवेयर

ध्यान दें कि यह सॉफ़्टवेयर स्थापित नहीं करता है या VM लोड करने और वर्चुअलबॉक्स सेटिंग्स सेट करने की मशीन को सेट करता है। इसे VirtualBox के लिए एक स्क्रिप्टिंग इंजन के रूप में सोचें।

यहाँ कुछ कारण बताए गए हैं जो मैंने केवल VirtualBox पर Vagrant का उपयोग करने के लिए देखा है।

1. आसानी से मल्टी-वीएम नेटवर्क सेट करें

मेरे द्वारा पढ़ी गई अधिकांश Vagrant पावर-उपयोगकर्ता सामग्री एक ही समय में कई VMs सेट करने के बारे में है। वैग्रंट आपको इनको सेट करने के लिए एक सिंगल कॉन्फिग फाइल देता है, जिससे आप इन सभी को एक कमांड के साथ लॉन्च कर सकते हैं।

कहते हैं कि आपने 192.168.1 को स्थैतिक आईपी का उपयोग करते हुए तीन वीएम को एक दूसरे के साथ नेटवर्क में कॉन्फ़िगर किया है। * सबनेट। आप अपने आप को उस स्थान पर पाते हैं जो पहले से ही आईपी पते को सौंपने के लिए उस सबनेट का उपयोग कर रहा है, और आपके वीएम अब संघर्ष करते हैं। वैग्रंट के साथ, आप बस Vagrantfile को संपादित कर सकते हैं और VMs को पुनः लोड कर सकते हैं, जबकि VirtualBox के साथ आपको प्रत्येक VM के लिए सेटिंग्स खोलनी होंगी, यदि प्रत्येक वीएम को बूट न ​​करें और उन्हें अंदर बदलें।

2. स्रोत नियंत्रण

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

3. विभिन्न मंच

Http://vagrantbox.es जैसी साइटों पर बड़ी संख्या में बॉक्स उपलब्ध हैं । यह आपको विभिन्न OS या वितरण की कोशिश करने में सक्षम बनाता है, समान वातावरण सेट करने के लिए समान प्रावधान लागू करता है। यह नए प्लेटफ़ॉर्म पर परीक्षण या समर्थन को जोड़ने में मदद कर सकता है, और बस वर्चुअलबॉक्स का उपयोग करके समय लेने वाला होगा।

प्रोविजनिंग सॉफ्टवेयर का उपयोग करने के साथ-साथ इमेज स्नैपशॉट का उपयोग करने के लिए बहुत सारे तर्क हैं। अतिरिक्त चर्चा के लिए, मैं आपको स्टीफन नेल्सन-स्मिथ के उत्कृष्ट लेख की ओर इंगित करता हूं कि एक दिन में 100 वेब सर्वर कैसे बनाएं


8
फिर भी, मुझे समझ नहीं आ रहा है कि मुझे विकास के माहौल में योनि का उपयोग क्यों करना चाहिए! क्योंकि, यह महंगा है (यदि आप VMWare का उपयोग करना चाहते हैं!) हम बेस बॉक्स की तरह एक वर्चुअल मशीन तैयार कर सकते हैं, जो कि योनि द्वारा उपयोग किया जाता है तो एक अन्य वर्चुअल मशीन स्थापित करने के लिए VMware द्वारा क्लोन प्राप्त करें। और सबसे पहले, हम सभी वर्चुअल मशीन सेटिंग्स को vmrunकमांड द्वारा नियंत्रित कर सकते हैं जो वीएमवेयर द्वारा पेश की गई हैं यहां तक ​​कि आईपी पता भी बदल जाता है या अतिथि मशीन के अंदर एक स्क्रिप्ट चल रहा है!
ओयूयूज़ dलीकडेमिर

3
@ Oğuz pointelikdemir यह एक उचित बिंदु है। एक नई मशीन लाने के संबंध में, Vagrant सिर्फ VMWare के लिए एक आसान फ्रंट-एंड डालता है। पर्दे के पीछे, इसे vmrunनियंत्रित करने के लिए उपयोग कर रहा है। मैंने हमेशा VirtualBox का उपयोग किया था, और इस तरह VMWare बैकएंड के साथ कोई अनुभव नहीं है।
एडम लुकेन्स

1
@AdamLukens, विस्तृत टिप्पणियों के लिए धन्यवाद। आपने जो उल्लेख किया है वह दिलचस्प लगता है .. लेकिन मुझे आश्चर्य है कि यदि आप VboxManageकमांड के बारे में जानते हैं ? virtualbox.org/manual/ch08.html आपके द्वारा बताई गई बहुत सी चीजों को एक विशिष्ट स्क्रिप्ट / पैरामीटर vboxmanage controlvmया एक समान कमांड को शेल स्क्रिप्ट में पास करके एक स्क्रिप्ट के रूप में बनाया जा सकता है और फिर संस्करण नियंत्रण कि .. तो कैसे vagrantसुधार होता है virtualbox?
अल्फा_989

@ अल्फ़ा_989 मैं सहमत हूँ। लगता है कि वग्रांत का उपयोग करने के लिए कोई अनोखी बात नहीं है। बस सुविधा के लिए।
निकल्स रोज़ेंक्रैंट्ज़

27

एडम द्वारा दिए गए उत्कृष्ट उत्तर के अलावा, वैग्रांट सब कुछ एक साथ जोड़ता है। हालांकि शेफ और पपेट (और नमक और शेल स्क्रिप्ट और आप जो भी अन्य उपयोक्ता उपयोग करना चाहते हैं) अलग चीजें हैं, वैग्रांट इसे सभी को एक साथ जोड़ता है और इसे सिर्फ एक के साथ काम करता है vagrant up

वह एक आज्ञा देगा

  1. बस वीएम शुरू करें अगर वह सब है जो आवश्यक है, लेकिन यह भी होगा
  2. अपने निर्दिष्ट बेस बॉक्स से बॉक्स बनाएं अगर वह भी अभी तक नहीं किया गया है, लेकिन अगर आपके पास मशीन पर आधार बॉक्स नहीं है तो भी मैं पहले आ जाऊंगा
  3. इसे अपने URL से प्राप्त करें और इसे अपनी मशीन पर डाउनलोड करें।

तुम सब के बारे में सोचने की जरूरत नहीं है। मान लीजिए कि आप एक अलग प्रोजेक्ट पर स्विच कर रहे हैं, जो एक सहकर्मी द्वारा शुरू किया गया है। आप बस अपने रेपो से कोड की जांच करते हैं, और दौड़ते हैं vagrant up, आईएसओ डाउनलोड करने या कुछ भी स्थापित करने के बारे में चिंता नहीं करते हैं, या सोच रहे हैं कि उस विशेष क्लाइंट के लिए आपको कौन से डिस्ट्रो के किस संस्करण का उपयोग करने की आवश्यकता है, या क्या आपके पास एक वीएम की एक प्रति है जो पहले से ही सब कुछ पा चुकी है आप की जरूरत है।

आपको इस बारे में चिंता करने की ज़रूरत नहीं है कि क्या उन्होंने शेफ या पपेट या सिर्फ शेल स्क्रिप्ट का उपयोग करके चीजें सेट की हैं। (ठीक है, इसलिए आपको ऐसा करने की आवश्यकता हो सकती है bundle installया अन्यथा सुनिश्चित करें कि आपने सब कुछ स्थापित कर लिया है, लेकिन फिर भी यह एक बड़ी बात नहीं है।)

सब कुछ एक साथ बांधकर, और सभी के लिए एक एकीकृत इंटरफ़ेस प्रदान करके, यह सभी को आसान बना सकता है, लेकिन सबसे सरल मामलों का उपयोग बहुत आसान है। सबसे पहले आप ऐसा महसूस कर सकते हैं कि आप जो कर रहे हैं उसे करने के लिए एक नया तरीका निकाल रहे हैं, लेकिन एक बार जब आप वैग्रैंट उपयोग में गहरे हो जाते हैं तो आपको पता चलता है कि आप बहुत कम प्रयास के साथ बहुत कुछ कर सकते हैं। यह शुरुआती समय के निवेश के लायक होगा।


8
लेकिन यह एक बहुत आसान और तेजी से मेरे लिए एक डेवलपर को प्रीसेटअप वीएम छवि भेजने की तुलना में है, क्योंकि यह उनके लिए योनि स्थापित करने के लिए है, इसका उपयोग करना सीखें, और आने वाली असंख्य समस्याओं में से किसी से निपटें, विशेषकर समर्थन करते समय खिड़कियों के बक्से। मैं अभी भी नहीं मिलता है, या तो। लगता है कि प्रशंसक के अलावा कुछ नहीं है।
प्रोपेसेकेर

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

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

4
और जब आपको सभी 50 कंप्यूटरों पर कुछ बदलने की आवश्यकता हो?
iconoclast

4
यहां चर्चाएं वास्तव में समय से पहले अनुकूलन के बारे में हैं। यदि आपको इसकी आवश्यकता नहीं है, तो योनि का उपयोग न करें। जब आप VMs को थकाऊ बना रहे हैं, तो योनि का उपयोग करें।
कैममिल

9

VM प्रोविजनिंग के साथ शेफ या कठपुतली को एकीकृत करने की क्षमता महत्वपूर्ण है। अधिकांश वैग्रांत उपयोगकर्ता आपको बताएंगे कि वे 'योनि प्रावधान' चलाते हैं और कभी-कभी 'योनि पुनः लोड' को 'योनि अप' या 'योनि विनाश' की तुलना में अधिक बार चलाते हैं। इन कार्यों से संकेत मिलता है कि वास्तविक कार्य VMs को ऊपर / नीचे कताई करने में नहीं है, लेकिन इस तथ्य के बाद उन्हें 'प्रबंधित' कर रहा है।

एक बेहतर प्रश्न का जवाब देने के लिए (कुशल बावर्ची उपयोगकर्ताओं द्वारा, वैसे भी) हो सकता है कि उपयुक्त प्लगइन के साथ वैग्रैंट और चाकू का उपयोग क्यों करें (एक पल में वर्चुअलबॉक्स प्लगइन को मिलेगा)? उदाहरण के लिए, डेटा थैले में चाकू के प्लग में संग्रहित लॉजिक वैल्यूज (रास्ता) एक विशाल वैग्रांटीफाइल की तुलना में अधिक बुद्धिमान, लचीला और प्रबंधनीय है। मैं आमतौर पर अपने 'डायनामिक' संसाधनों को परिभाषित करता हूं जैसे # सीपीयू की मात्रा, मेमोरी की मात्रा, जिसे ओएस परिनियोजित करने के लिए, होस्टनाम, आईपी, रूट, आदि, शेफ डेटबाग (ओं) में, जैसे कि मुझे अपना नुस्खा बदलते रहने की आवश्यकता नहीं है; - )। शेफ वेब इंटरफ़ेस के माध्यम से डेटाबाग को संपादित करना वास्तव में आसान डेटा प्रविष्टि कार्य है जो मैं सबसे जूनियर ऑपरेटरों को दे सकता हूं। Vagrantfile के साथ, आपका हमेशा के लिए कोड को संशोधित करना और उस पर विश्वास करना या न करना - कोड टूटना - जो बहुत गारंटी देता है कि आप ऑपरेशन कर्मचारियों को सरल परिवर्तन नहीं सौंपेंगे।

इस तथ्य के अलावा कि चाकू के पास वर्चुअलबॉक्स के लिए एक प्लगइन नहीं है (हालांकि मैं बहुत दूर के भविष्य में भी कल्पना नहीं करता हूं), पहले से ही अधिकांश 'एंटरप्राइज' वर्चुअलाइजेशन उत्पादों के लिए प्लगइन्स हैं, जिसमें vmware, xctorver और बस हर प्रमुख 'क्लाउड' के बारे में है। प्रदाता, साथ ही। इसका मतलब यह है कि चाकू वह बेहतर है जो वैग्रांट प्रदान करता है कि क्या आप / जब आप वर्चुअलबॉक्स से आगे बढ़ने के लिए तैयार हैं। अभी के लिए, चेफ़ समुदाय वर्चुअलबॉक्स उपयोगकर्ताओं को वैग्रेन्ट के साथ लिपटने के लिए वर्चुअलबॉक्स एपिस को एकीकृत नहीं करने देता है। एक चाकू-योनि प्लगइन है जो तर्कों को पारित करने के लिए डेटा बैग के उपयोग की अनुमति देता है। लेकिन, इसके लिए अभी भी योनि सॉफ्टवेयर की आवश्यकता होती है और यह कार्य करने के लिए मोनोलिथिक वैग्रांटफाइल है।

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


8

यहां दो और डेवलपर उपयोग के मामले हैं जो कि योनि को सरल बनाता है ("सादे" वर्चुअलबॉक्स)। मैंने इन उपयोग-मामलों को विशेष रूप से पिछले उत्तरों में नहीं देखा था।

  1. वैग्रांट विकास और उत्पादन प्लेटफार्मों को यथासंभव एक-दूसरे के करीब रखने के उद्देश्य से मदद करता है। एक आदर्श दुनिया में, आप VAGrant VM को प्रावधान करने के लिए उपयोग किए गए SAME लिपियों के साथ उत्पादन के माहौल का प्रावधान करेंगे, तैनाती के समय आश्चर्य को कम करेंगे।

  2. एकीकरण परीक्षण और निरंतर एकीकरण: परीक्षणों से नियंत्रण करना आसान है, और इसलिए पूरे मल्टी-मशीन स्टैक को टेस्ट रन करते समय जेनकींस जैसे उपकरणों से आसानी से नियंत्रित किया जा सकता है।

हां, "सादे" वर्चुअलबॉक्स का उपयोग यहां भी किया जा सकता है - लेकिन योनि द्वारा उपयोग किए जाने वाले सम्मेलनों ने इन परिदृश्यों को स्थापित करना अधिक सरल बना दिया है।


1
मैं गंभीरता से सिर्फ vmx और vmdk को विंडोज से लिनक्स पर कॉपी करता हूं। शायद यह वर्चुअलबॉक्स की दुनिया में अलग है, लेकिन मुझे इसमें शक है! क्या आसान है? किसी फ़ाइल को कॉपी करना या वैजाइंटफाइल्स के साथ गड़बड़ करना और उन समस्याओं का असंख्य होना जो गलत हो सकती हैं?
होपसेकर

6
उस पर एक महीन बिंदु डालने के लिए, वैग्रेंट को एक आभासी परिभाषा भाषा के रूप में सोचा जा सकता है जो वर्चुअल मशीन की विशेषताओं का वर्णन कर सकता है - यह निर्भर करता है कि क्या यह वर्चुअलबॉक्स, वीएमवेयर, समानताएं या क्या-क्या-आप के तहत होस्ट किया गया है। देखें कि कैसे Vagrant "वर्चुअलबॉक्स" की प्रतियोगिता नहीं है, लेकिन इसके साथ, या इसके परे काम करता है।
MarkHu

एक आम तौर पर एक Vagrantfile का उपयोग यह बताने के लिए किया जाएगा कि किसी प्रोजेक्ट के लिए वर्चुअल मशीन कैसे स्थापित की जाती है - Vagrantfile प्रोजेक्ट के साथ सोर्स कंट्रोल (git, आदि) के लिए प्रतिबद्ध होगा, GitHub आदि पर साझा करने के लिए यह डाउनलोड करने के लिए बहुत छोटा है। पूरे VMDK की तुलना में।
बेन एक्सओ

0

Vagrant अमूर्त आभासी मशीनों तो यह आप आसानी से आभासी मशीन कार्यान्वयन स्विच करने के लिए अनुमति देता है। आप वर्चुअल बॉक्स से AWS या डिजिटल महासागर में स्विच कर सकते हैं। यह डेटाबेस-विशिष्ट क्वेरी भाषा के बजाय SQL का उपयोग करने जैसा है।

वैग्रांट डेवलपर्स को केवल एक कमांड के साथ जल्दी से अपना वातावरण स्थापित करने की अनुमति देता है और यह बिल्कुल वैसा ही है जैसा बाकी सबका है। यह उन बड़ी कंपनियों में महत्वपूर्ण है जहां डेवलपर अक्सर आते और जाते हैं। यह सेटअप को 3 दिन से 1 घंटे तक कम कर सकता है।

+ आदम ने क्या कहा।

(मैं अभी भी बावर्ची या कठपुतली के लिए एक उपयोग नहीं मिला है, हालांकि ...)

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.