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


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

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

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

कठपुतली और महाराज वास्तव में वाग्रेंट का हिस्सा नहीं हैं, वे अपनी खुद की बात सही हैं?

तो हां, विशेष रूप से वर्चुअलबॉक्स पर Vagrant ऑफ़र क्या फायदे हैं?


214
2018-04-17 14:39


मूल


दो साल बाद मैं विकास के लिए हर दिन वाग्रेंट का उपयोग कर रहा हूं - यह बहुत अच्छा है! मेरी टीम इसका उपयोग करती है और यह हमारे देव पर्यावरण के मुद्दों को हल करती है। - John Hunt
यहां पर विचार किया गया: यदि आपको कभी भी PXE सर्वर स्थापित करने में कोई परेशानी नहीं है, तो VBoxManage को दिल से जानें, एक मिनट से भी कम समय में nfs को कैसे सेट करें और सीधे निर्माण श्रृंखलाओं को प्रबंधित करना भी पसंद है .. बिल्कुल कोई बात नहीं है। आपके द्वारा खोए गए पहेली के प्रत्येक भाग के साथ मूल्य बढ़ जाता है। व्यापक उपयोग कठपुतली एकीकरण से नहीं है, बल्कि लोग इंटरनेट से सीधे सुरक्षा-छेड़छाड़ की छवियों को सुरक्षा दे सकते हैं। इससे कोई फर्क नहीं पड़ता कि वे आपको क्या कहते हैं। - Florian Heigl
मैंने एक बहु-डेवलपर टीम में वानर को और भी अधिक उपयोगी पाया, जबकि पहले यह सिर्फ मुझे था। मैंने अपनी टीम पर वानर लगाया और पाया कि वह मूल्य कहां आता है। - John Hunt
3.5 साल और अब मैं विकास के लिए हर दिन डॉकर का उपयोग करता हूं। यह अच्छा है, लेकिन योनि के लिए एक अलग जानवर ... आपकी आवश्यकताओं के आधार पर मेरा मानना ​​है कि योद्धा अभी भी टीमों के लिए एक बेहतर विकास मंच है - यह काम करना बहुत आसान है। - John Hunt
4 साल और मैंने पाया है कि डॉकर भयानक है। लंबे समय तक रहते हैं Vagrant। - John Hunt


जवाब:


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

आवारा

एक या अधिक वर्चुअल मशीनों को स्थापित करने के लिए Vagrant का उपयोग किया जाता है:

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

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

वर्चुअलबॉक्स पर वग्रेंट का उपयोग करने के लिए मैंने कुछ कारण यहां देखे हैं।

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

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

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

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

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

3. विभिन्न प्लेटफॉर्म

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

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


146
2018-04-27 05:41



फिर भी, मुझे समझ में नहीं आता कि मुझे विकास पर्यावरण में योनि का उपयोग क्यों करना चाहिए! क्योंकि, यह महंगा है (यदि आप वीएमवेयर का उपयोग करना चाहते हैं!) हम वर्चुअल मशीन जैसे आधार बॉक्स तैयार कर सकते हैं जो योनि द्वारा उपयोग किया जाता है, फिर एक और आभासी मशीन स्थापित करने के लिए वीएमवेयर द्वारा क्लोन प्राप्त करें। सबसे पहले और सबसे महत्वपूर्ण, हम सभी आभासी मशीन सेटिंग्स को नियंत्रित कर सकते हैं vmrunकमांड जो वीएमवेयर द्वारा प्रस्तावित किया गया है, आईपी एड्रेस बदलता है या अतिथि मशीन के अंदर एक स्क्रिप्ट चला रहा है! - Oğuz Çelikdemir
@ OğuzÇelikdemir यह एक उचित बिंदु है। एक नई मशीन लाने के संबंध में वाग्रेंट सिर्फ वीएमवेयर के लिए एक आसान फ्रंट-एंड रखता है। दृश्यों के पीछे, यह उपयोग कर रहा है vmrun इसे नियंत्रित करने के लिए। मैंने हमेशा वर्चुअलबॉक्स का उपयोग किया था, और इस प्रकार वीएमवेयर बैकएंड के साथ कोई अनुभव नहीं है। - Adam Lukens
@AdamLukens, विस्तृत टिप्पणियों के लिए धन्यवाद। आपने जो उल्लेख किया वह दिलचस्प लगता है .. लेकिन मुझे आश्चर्य है कि क्या आप इसके बारे में जानते हैं VboxManage आदेश? virtualbox.org/manual/ch08.html  आपने जो कुछ भी बताया है, उसे विशिष्ट आईपी / पैरामीटर को पास करके एक स्क्रिप्ट के रूप में बनाया जा सकता है vboxmanage controlvm या एक शेल स्क्रिप्ट में एक समान कमांड और उसके बाद संस्करण नियंत्रण .. तो कैसे करता है vagrant में सुधार virtualbox? - alpha_989
@ अल्फा_ 9 8 9 मैं सहमत हूं। वग्रेंट का उपयोग करने के लिए कोई अनोखा बिंदु नहीं लगता है। बस सुविधा के लिए। - Niklas Rosencrantz


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

वह एक आदेश होगा

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

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

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

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


26
2018-01-09 17:56



लेकिन यह मेरे लिए एक डेवलपर को प्रीसेटअप वीएम छवि भेजने के लिए बहुत आसान और तेज़ है, क्योंकि उनके लिए वानर स्थापित करना, इसका उपयोग करना सीखना है, और आने वाली असंख्य समस्याओं से निपटना, विशेष रूप से समर्थन करते समय खिड़कियां बक्से मैं वास्तव में इसे प्राप्त नहीं करता, या तो। लगता है कि प्रशंसकों के अलावा कुछ भी नहीं है। - hopeseekr
इन दिनों वग्रेंट स्थापित करना अविश्वसनीय रूप से आसान है। कोई भी जो इसे इंस्टॉल नहीं कर सकता है, संभवतः कोड लिखने पर भरोसा नहीं किया जा सकता है। आपके स्रोत कोड में एक Vagrantfile होने के कारण डेवलपर चेक आउट वास्तव में एक वीएम भेजने से कहीं ज्यादा आसान है। Vagrantfile उस सेटअप को परिभाषित करता है, जिसमें यूआरएल शामिल है जिसमें बेस वीएम डाउनलोड किया जाता है (जिसे यह तब कॉन्फ़िगर करता है)। यदि आपको प्रारंभ में कॉन्फ़िगरेशन परिवर्तन करने की आवश्यकता नहीं है, तो आप सभी सेट हो गए हैं। लेकिन जब आप अपनी परियोजना पर काम करते हैं, तो आपको बदलाव करने की आवश्यकता होगी। अपने Vagrantfile में ऐसा करो। - iconoclast
चूंकि आप अपने कोड के साथ Vagrantfile रखते हैं, इसलिए प्रोजेक्ट में शामिल होने वाले सभी डेवलपर स्वचालित रूप से आपके VM में किए गए परिवर्तन प्राप्त करेंगे, क्योंकि आप उन्हें Vagrantfile में बना रहे हैं। अपने Vagrantfile को कॉन्फ़िगर करना मुश्किल नहीं है। यदि आप शेफ और कठपुतली को ओवरकिल (जो वे अक्सर होते हैं) पाते हैं तो आप खोल प्रावधान का उपयोग कर सकते हैं। यदि आप वीएम में शेल कमांड दर्ज कर सकते हैं, तो यह Vagrantfile में खोल प्रावधान कमांड सेट अप करने के लिए एक छोटा बाधा है। यह एक छोटे से आगे के प्रयास करेगा और आपको लंबे समय तक बहुत सारे सिरदर्द बचाएगा। - iconoclast
@hopeseekr मैं भी यह सोच रहा था। मैंने लाभ देखने की कोशिश कर पढ़ा रखा है। मुझे लगता है कि मैं अंततः इसे प्राप्त करता हूं। मैं पायथन नेटवर्किंग पर एक पुस्तक पढ़ रहा हूं। परीक्षण एक जटिल सेटअप अनुकरण मशीन है जिसे आप सीखने के लिए उपयोग कर सकते हैं। आप एक वीएम डब्ल्यू / लिनक्स बना सकते हैं, इसे हाथ से करें, और मैं एक व्यक्ति हूं, तो यह ठीक है। मैंने विंडोज़ पर वग्रेंट स्थापित किया और वर्चुअलबॉक्स पर उपयोग करने के लिए अपनी छवि को कॉल करने के लिए तीन वाग्रेंट कमांड दर्ज किए। अगर मेरे पास 50 पीसी थे तो क्या होगा? स्नैपशॉट्स के साथ सेटअप करने के लिए लंबा समय। क्या होगा अगर परिवर्तन हो? 50 अपडेट? मेरे लिए मैं सबकुछ स्थापित किए बिना तुरंत काम करना शुरू कर पाया। - johnny
और जब आपको सभी 50 कंप्यूटरों पर कुछ बदलना होगा? - iconoclast


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

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

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

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


8
2018-03-21 14:13





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

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

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

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


8
2018-06-20 11:19



मैं गंभीरता से विंडोज़ से लिनक्स तक वीएमएक्स और वीएमडीके की प्रतिलिपि बनाता हूं। शायद यह वर्चुअलबॉक्स दुनिया में अलग है, लेकिन मुझे शक है! क्या आसान है? फ़ाइल की प्रतिलिपि बनाना या योनिफाइल के साथ गड़बड़ करना और उन समस्याओं के असंख्य जो गलत हो सकते हैं? - hopeseekr
इस पर एक बेहतर बिंदु डालने के लिए, वाग्रेंट को आभासी परिभाषा भाषा के रूप में माना जा सकता है जो वर्चुअल मशीन की विशेषताओं का वर्णन कर सकता है - इस पर निर्भर करता है कि यह वर्चुअलबॉक्स, वीएमवेयर, समानांतर, या आपके पास क्या है। देखें कि कैसे Vagrant वर्चुअलबॉक्स को "प्रतिस्पर्धा" नहीं है, लेकिन इसके साथ काम करता है, या इससे परे। - MarkHu
एक परियोजना के लिए वर्चुअल मशीन स्थापित करने के तरीके का वर्णन करने के लिए आम तौर पर एक वाग्रेंटफाइल का उपयोग किया जाएगा - गीगहब इत्यादि पर साझा करने के लिए, वाग्रेंटफाइल परियोजना के साथ स्रोत नियंत्रण (गिट इत्यादि) के लिए प्रतिबद्ध होगा। यह डाउनलोड करने के लिए बहुत छोटा है एक पूरे वीएमडीके की तुलना में। - Ben XO


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

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

+ एडम ने क्या कहा।

(मुझे अभी भी शेफ या कठपुतली के लिए उपयोग नहीं मिला है ...)


0
2018-03-29 01:58