वितरित करने के लिए एक Ubuntu वीएम बनाना


19

मैं एक प्रोग्रामिंग कोर्स के लिए TA हूँ और सभी आवश्यक सॉफ्टवेयर (C ++ और पायथन विकास के लिए) के साथ Ubuntu 14.04 LTS पर आधारित एक वर्चुअल मशीन छवि बनाने का काम करता हूं, जो कि पहले से ही एक ही वर्चुअल सिस्टम चल रहा है और हम संघर्ष से बचते हैं विभिन्न मशीनों और ऑपरेटिंग सिस्टम की एक किस्म पर काम करने के लिए सब कुछ प्राप्त करना। हम मेजबान वीएम सॉफ्टवेयर के रूप में वर्चुअल बॉक्स का उपयोग करने का इरादा रखते हैं क्योंकि यह मुफ्त और उपलब्ध क्रॉस प्लेटफॉर्म है।

वास्तव में, मैं सिर्फ उबंटू 14.04 एलटीएस डिस्क छवि का उपयोग करूंगा, इसे अपने वर्चुअल बॉक्स में चलाऊंगा, इसे वर्चुअल हार्ड डिस्क (वीडीआई) में स्थापित करूंगा, पूर्वनिर्धारित पासवर्ड के साथ "छात्र" खाता स्थापित करूंगा, सभी आवश्यक सॉफ्टवेयर स्थापित करूंगा, बंद करूंगा वर्चुअल मशीन के नीचे और VDI फ़ाइल वितरित करें। हम प्रत्येक छात्र से वर्चुअल बॉक्स में VDI आयात करने के लिए कहेंगे, इसे चलाएंगे और अपना व्यक्तिगत खाता सेट करेंगे (या बस डिफ़ॉल्ट छात्र खाते का उपयोग करें)।

  • क्या उपरोक्त प्रक्रिया व्यवहार्य है?
  • बाहर देखने के लिए क्या नुकसान हैं? हमें इसे बहुत अधिक मूर्खतापूर्ण साबित करने की आवश्यकता है। हम 80+ छात्रों की अपेक्षा करते हैं और केवल चार TAs हैं, इसलिए हम व्यक्तिगत सहायता प्रदान नहीं कर सकते हैं।
  • क्या गतिशील रूप से आवंटित VDI- टाइप वर्चुअल HDD का उपयोग करने के नुकसान हैं?
  • क्या वर्चुअल बॉक्स के गेस्ट एडिशंस को बल्ले से लगाना सही है या यह कुछ भी होस्ट-विशिष्ट करता है?
  • क्या उपयोगकर्ता खाता निर्माण को संभालने का एक और अधिक सुंदर तरीका है? आदर्श रूप से, उबंटू उन्हें एक खाता निर्माण विज़ार्ड के माध्यम से डाल देगा और उन्हें अपने पासवर्ड सेट करने (साथ ही उन्हें sudoers फ़ाइल में जोड़ने के लिए) पहली बार छवि को बूट करेगा। यह एक प्राथमिकता नहीं है, हालांकि। मुझे लगता है कि डिफ़ॉल्ट खाता ठीक है।

3
ध्यान दें कि आपको स्रोत कोड के लिए एक प्रस्ताव शामिल करना होगा, क्योंकि आप जीपीएल की शर्तों के तहत सॉफ़्टवेयर वितरित कर रहे हैं।
क्रिस इंएमॉन्टनॉन

@ChrisInEdmonton अच्छी बात है। चूँकि मैं स्वयं कोई कोड नहीं लिखता, क्या यह तकनीकी रूप से संशोधन है या यह केवल पुनर्वितरण है? क्या छात्रों को उबंटू या तीसरे पक्ष के स्रोतों को इंगित करने के लिए पर्याप्त है जो उन्हें पूछना चाहिए (वे नहीं करेंगे) या क्या मैं कानूनी रूप से स्रोत प्रदान करने के लिए कानूनी रूप से बाध्य हूं? क्या यह मायने रखता है कि मैं छवि को प्रकाशित नहीं करता, बल्कि इसे सीमित दर्शकों तक सीमित पहुंच के साथ प्रदान करता हूं?
जोनास ग्रीटीमैन

मैं बस आपको जीपीएल की ओर इशारा करूंगा क्योंकि मैं वकील नहीं हूं। यह यहाँ एक मुद्दा बनने की संभावना नहीं है। :)
क्रिसइन्डेमोंटोन

2
मैं कहूंगा कि आप ऐसा करने की जरूरत नहीं है कि एक साथ उबंटू छवि को ही साथ: gnu.org/licenses/... कैसे स्रोत कोड डाउनलोड करने के लिए दिए गए निर्देशों में बस लिखने कहीं।
MARKON

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

जवाबों:


18

जबकि यह प्रश्न कुछ हद तक एक राय है:

हां, यह प्रक्रिया व्यवहार्य है - मेरा मानना ​​है कि यह वही होगा जो आप देख रहे हैं और यह कुछ ऐसा है जो मैंने पिछले अन्य लिनक्स वितरणों के साथ किया है।

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

डायनेमिक डिस्क का नुकसान यह है कि होस्ट OS को अधिक से अधिक डिस्क स्पेस आवंटित करना पड़ता है क्योंकि VM डेटा / अपडेट के साथ बढ़ता है। इसमें एक प्रदर्शन ओवरहेड है जो कई बार सिरदर्द हो सकता है - खासकर यदि आप कम शक्ति वाले वीएम पर चल रहे हैं (होस्ट मशीन पावर माइनस पॉवर का उपयोग डिस्क को विस्तारित करने के लिए किया जा रहा है जो वीएमएस को थोड़ा पीछे कर देता है) .. यह संभावित रूप से भी बनाता है तब अप्रमाणनीय (आपकी प्रयोगशाला में सभी मशीनों में 100GB + एक बार एक छात्र ने अपने वीएम के साथ गड़बड़ की हो सकती है)

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

सुरुचिपूर्ण उपयोगकर्ता निर्माण - निश्चित नहीं, शायद एक स्क्रिप्ट जो पहले लॉन्च पर चलती है और एक उपयोगकर्ता को स्क्रिप्ट को नष्ट करने से पहले एक नया खाता बनाने के लिए कहती है? मैं कुछ खुदाई करूँगा और आपके पास वापस आऊंगा जब मेरे पास 5 मिनट होंगे।

उम्मीद है कि यह कम से कम आंशिक रूप से मदद करता है।


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

1
बिल्कुल - और यह पूरी तरह से संभव है कि एक अंतर्निहित समाधान है, इसलिए मैं इसे ढूंढना चाहता हूं।
फ़ाज़र87

13

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

हालांकि, अगर आप चाहते हैं उन्हें जल्दी चलाने के लिए, मैं उपयोग करने की अनुशंसा Vagrant और अपने छात्रों को एक Vagrantfile कि प्रदर्शन प्रावधान आप एक पर की आवश्यकता होती है वांछित करने के लिए वितरण मानक उबंटू छवि । इसके कई फायदे हैं:

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

यहां एक उदाहरण Vagrantfile दिखाया गया है कि कैसे एक Ubuntu 14.04 छवि पर कुछ प्रावधान करना है।


3
वैग्रांट और / या पैकर इसके लिए जाने का तरीका है।
सैंडी चैपमैन

9

पूरी तरह से संभव है। विकल्प Vagrant, कठपुतली, रसोइया या VM के खरोंच से निर्माण के समान कुछ होगा, लेकिन यह सेटअप करने के लिए बहुत काम है।

मेरी साइटों में से एक पर विकास टीम नए डेवलपर्स को जल्दी से चलाने और चलाने के लिए समान है।
छवि में 1 पूर्व-निर्धारित खाता (sudo- अधिकारों के साथ) और व्यक्तिगत खाते के साथ अपने खाते को बनाने के लिए आवश्यक कदमों के साथ एक छोटा निर्देश-दस्तावेज।

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


3
"सेटअप करने के लिए बहुत काम" इस बात पर निर्भर करता है कि आपको कितनी बार छवियां बनानी हैं। क्या आप फिर से अगले सेमेस्टर में भी यही कोर्स कर रहे हैं? क्या आप शायद अगले सेमेस्टर में अलग भाषा के साथ इसी तरह का कोर्स कर रहे हैं? क्या आप अपने उत्तराधिकारियों के लिए जीवन को आसान बनाना चाहते हैं? C ++ कंपाइलर में बग होते हैं जो बाद के संस्करणों में ठीक हो जाते हैं। 2017 में एक नया C ++ मानक सामने आता है। याद रखें, एक प्रोग्रामर वह व्यक्ति होता है जो 2 घंटे में एक कार्य करने के लिए 2 घंटे का समय लिखने के लिए 2 घंटे खर्च करता है। ;-)
Jörg W Mittag

2
@ JörgWMittag बेशक, आपको एक बिंदु मिल गया है। लेकिन अगर आप वैग्रान्ट से परिचित नहीं हैं और सीखने की अवस्था की तरह ही काफी खड़ी / समय लेने वाली हो सकती हैं। व्यक्तिगत रूप से मैं शायद इस सेमेस्टर के त्वरित समाधान के लिए वीएम समाधान के लिए जाऊंगा और सेमेस्टर के दौरान दीर्घकालिक दृष्टिकोण के लिए दूसरे समाधान में विकसित होने में कुछ समय बिताऊंगा।
टन

2
नेटवर्क एक्सेस के संबंध में, वितरित वीएम में संभवतः समान मैक पते होंगे। यह NAT के साथ एक समस्या नहीं हो सकती है, लेकिन वैसे भी मैक पते को रीसेट करना एक अच्छा विचार है।
user1937198

1
@ user1937198 MAC VirtualBox / vmdk द्वारा सेट किया गया है, VDI में ही सेट नहीं किया गया है। यदि आप इंगित करते हैं और वर्चुअलबॉक्स में एक साथ एक नया वीएम क्लिक करते हैं और फिर VDI फ़ाइल जोड़ें तो आपको एक ताज़ा मैक मिलेगा। (ओवीए से आयात करके आपको मैक को रीसेट करने के लिए कहा जाएगा या नहीं।) लेकिन आप सही हैं। यह विचार करने के लिए कुछ और है और निश्चित रूप से एक समस्या है अगर नेटवर्क को चलाने में है।
टॉनी

1
@SteveBarnes मैं निस्संदेह आपके साथ अंतिम वाक्यांश से सहमत हूं: कोई फर्क नहीं पड़ता कि काम-निर्देश कितना अच्छा है, लोग इसका पालन करते समय गलत हो जाएंगे। वे चरणों को छोड़ देते हैं (या उन्हें गलत क्रम में करते हैं), कमांड में टाइपो बनाते हैं जिन्हें उन्हें निष्पादित करने की आवश्यकता होती है या उन्हें लगता है कि वे बेहतर जानते हैं और स्क्रिप्ट से विचलन करते हैं। यदि यह स्वचालित है (मेरा वर्तनी-जांचकर्ता सुनिश्चित नहीं है कि वास्तव में एक शब्द है) तो इसे स्वचालित करने के लिए सबसे अच्छा तरीका अभी भी है: त्रुटि के लिए कोई जगह नहीं है।
Tonny
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.