वैग्रांट, डॉकर, शेफ और ओपनस्टैक (या इसी तरह के उत्पादों) के बीच संबंध?


56

मैं एक वेब डेवलपर हूं, लेकिन मुझे कुछ प्रशासनिक कार्यों में भी दिलचस्पी है। इसलिए, शुद्ध प्रशासन से देव-अप के लिए नई चाल मेरे लिए काम आती है।

वैसे भी, मुझे कुछ चीजों को रिश्ते में रखने के लिए कुछ समस्याएं हैं। शायद कोई भी नहीं है, इसलिए मैं स्पष्ट करने के लिए मदद मांगना चाहता था।

मूल रूप से, मैं जो संबंध में रखना चाहता हूं वह चार प्रकार के सॉफ़्टवेयर (मेरी समझ से) है। सटीक उत्पाद मायने नहीं रखते, आप किसी भी समान सॉफ्टवेयर को विकल्प के रूप में रख सकते हैं:

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

प्रश्न # 1: क्या मेरे स्पष्टीकरण सही हैं, या क्या मैं इन उपभोगों में से कुछ (या सभी) के साथ गलत हूं?

प्रश्न # 2: मैं उन सभी उपकरणों को कैसे मिला सकता हूं? क्या इससे कोई मतलब होगा?

मेरी कल्पना में और मेरी समझ से, आप जा सकते हैं और

  • अपने खुद के बादल बनाने के लिए ओपनस्टैक का उपयोग करें,
  • क्लाउड में VM को चलाने के लिए Vagrant का उपयोग करें,
  • इन VMs को सेटअप करने के लिए शेफ का उपयोग करें
  • और अंत में VMs के अंदर प्रक्रियाओं को चलाने के लिए Docker का उपयोग करें।

क्या ये सही है? और यदि हां, तो क्या आप मुझे यह सलाह दे सकते हैं कि यह सब कैसे शुरू किया जाए (यह एक ही समय में बहुत अधिक है, और मुझे अभी तक नहीं पता है कि कहां शुरू करना है)?


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

जवाबों:


54

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

  • बावर्ची : बावर्ची एक स्वचालन मंच है जो बुनियादी ढांचे को कोड में बदल देता है।

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

  • वैग्रंट : हल्के, प्रतिलिपि प्रस्तुत करने योग्य और पोर्टेबल विकास वातावरण बनाएं और कॉन्फ़िगर करें।

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

  • डॉकर : किसी भी एप्लिकेशन को हल्के कंटेनर के रूप में पैक करने, जहाज करने और चलाने के लिए एक ओपन सोर्स प्रोजेक्ट

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

  • ओपनस्टैक : निजी और सार्वजनिक बादलों के निर्माण के लिए ओपन सोर्स सॉफ्टवेयर।

    हालांकि यह सच है कि ओपनस्टैक को एक मशीन पर तैनात किया जा सकता है , ऐसी तैनाती विशुद्ध रूप से प्रूफ-ऑफ-कॉन्सेप्ट के लिए है, संभवतः संसाधन की कमी के कारण बहुत कार्यात्मक नहीं है।

    ओपनस्टैक इंस्टॉलेशन का प्राथमिक लक्ष्य नंगे धातु के बहु-नोड वातावरण हैं, जहां बेहतर परिणाम प्राप्त करने के लिए समर्पित हार्डवेयर में विभिन्न घटकों का उपयोग किया जा सकता है।

    ओपनस्टैक की एक प्रमुख कार्यक्षमता पूरी तरह से वर्चुअलाइज्ड (वर्चुअलबॉक्स, वीएमवेयर) से लेकर पैरावर्चुअलाइज्ड (KVM / Qemu) और कंटेनर (LXC) और यहां तक ​​कि यूजर मोड लिनक्स (UML) के लिए कई वर्चुअलाइजेशन तकनीकों के लिए इसका समर्थन है ।

मैंने इन उत्पादों को एक विशिष्ट वास्तुकला के घटकों के रूप में प्रस्तुत करने की कोशिश की है। मेरे दृष्टिकोण से, यह समझ में आता है कि पहले अपनी आवश्यकताओं को उस पर्यावरण के संबंध में परिभाषित करने में सक्षम होना चाहिए जिसकी आपको आवश्यकता है (बावर्ची, कठपुतली, मुंशी, ...), फिर इसे नियंत्रित फैशन में तैनात करने में सक्षम हों (वैग्रांट, डोकर) , ...) और अंत में इसे वैश्विक आकार के पैमाने पर रखा जाए, अगर जरूरत हो।

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

यह भी ध्यान दें कि मैंने अधिकतर सभी तकनीकी स्पष्टीकरणों को सरल कर दिया है। कृपया विस्तृत जानकारी के लिए संदर्भित लिंक का उपयोग करें।


क्या रसोइये और कठपुतली एक ही उपकरण हैं? मेरा मतलब है कि वे समान हैं? यदि आप इसे विंडोज 10 होस्ट पर चलाना चाहते हैं, तो आप कौन से टूल का उपयोग करेंगे?
रेनियरपीएम

कठपुतली रसोइये के लिए एक समान उपकरण है। विंडोज पर बेहतर है के बारे में अनिश्चित ..
Adeerlike

3

मुझे लगता है कि एक डेवलपर पृष्ठभूमि से आने वाला 'डेप्स' बन जाएगा वास्तव में अधिक मुश्किल है, आपका प्रश्न लगभग 3 साल पुराना है, इसलिए यह सुनना दिलचस्प होगा कि आप यात्रा कैसे पा रहे हैं, मैं इस दृष्टिकोण से जवाब दूंगा sys व्यवस्थापक आपके द्वारा ऊपर उल्लिखित अनुप्रयोगों के बारे में और उम्मीद है कि यह कुछ प्रकाश डालेगा, या एक गैर तकनीकी दृष्टिकोण देगा जो यह समझाने के लिए किसी तरह से जाएगा कि कोई व्यक्ति (व्यवस्थापक या देव) ठीक उसी तरह से विचार करना शुरू कर देगा जो आपने पूछा है जैसे कि देवों से परिप्रेक्ष्य क्या एक्स, वाई, जेड के बीच के रिश्ते इन उपकरणों से अधिक है कि उनके भागों का योग है?

मुझे वास्तव में लगता है कि sys के प्रवेशक का ऊपरी हाथ यहां है, आपके द्वारा आपके प्रश्न में वर्णित अधिकांश एप्लिकेशन व्यवस्थापक 'समस्याओं' को हल करते हैं और ऐसा करने में एक अधिक सार डेटा सेंटर वातावरण प्रदान करते हैं, और यह बदले में डेवलपर्स और नए के लिए अधिक प्रोग्राम योग्य है ' devops की रणनीति (पढ़ें रणनीति / टीम, devops एक व्यक्ति नहीं है)। तो आपके द्वारा उल्लिखित एप्लिकेशन के साथ क्या संबंध है? यह आईटी सेवा को एक समग्र दृष्टिकोण कैसे प्रदान करता है?

ओपनस्टैक: एक उपकरण जो आपको अपना निजी क्लाउड बनाने की अनुमति देता है, इसलिए एडब्ल्यूएस जैसी किसी चीज से तुलनीय है

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

डॉकर: एक "लाइटवेट वीएम", जो कुछ लिनक्स कर्नेल अवधारणाओं पर आधारित है, जिसका उपयोग अलगाव में प्रक्रियाओं को चलाने के लिए किया जा सकता है, उदाहरण के लिए एक साझा वेब होस्टिंग वातावरण में।

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

बावर्ची: एक ऑपरेटिंग सिस्टम को सेटअप और कॉन्फ़िगर करने के लिए एक उपकरण, उदाहरण के लिए एक वीएम के अंदर।

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

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

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

क्या आप मुझे सलाह दे सकते हैं कि यह सब कैसे शुरू किया जाए (यह एक ही समय में काफी है, और मुझे अभी तक नहीं पता है कि कहां शुरू करना है)?

यही कारण है कि मुझे लगता है कि एडिंस का ऊपरी हाथ है, हमें इसे मैन्युअल रूप से करना पड़ा है और पता है कि क्या गलत हो सकता है, कठपुतली मैनिफेस्ट्स, क्लाउड कंप्यूटिंग और डॉक ऑर्केस्ट्रेशन हमारे लिए आसान हो जाएगा, डेवलपर्स खुद को कई स्पर्शरेखाएं ले पाएंगे: किसी भी संभावित डेप्स के लिए सलाह पहले एक व्यवस्थापक होना है।


0

मैंने अभी एक ओपनस्टैक परिनियोजन परियोजना पूरी की है, जो वैग्रंट उदाहरण के अंदर एक शेफ सर्वर का उपयोग करती है: https://github.com/bluechiptek/bluechipstack/blob/master/README.md

इसे इस तरह से करने के साथ प्राथमिक समस्या वैग्रंट उदाहरण को वही आई पी मिल रही है जो आप नोड्स को प्रबंधित करना चाहते हैं। यदि आप स्थैतिक संबोधन करते हैं, तो यह अच्छी तरह से काम करता है। एक वीपीएन के माध्यम से ऐसा करना आदर्श से कम है।


0

अपने अंत में, मैं केवल वैगरेंट और डॉकर के संयोजन का उपयोग कर रहा हूं।

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

प्रोविजनिंग स्क्रिप्ट मैं एक सुरक्षित स्थान पर अंक का उपयोग करता हूं जिसमें docker swarm joinटोकन के साथ सीएसआर पर हस्ताक्षर करने के लिए उपयोग किए जाने वाले सीए प्रमाण पत्र और कुंजी शामिल हैं । इसके अलावा मैं डॉक-इंजन स्थापित करता हूं और इसे झुंड में शामिल होने के लिए कॉन्फ़िगर करता हूं (यदि कोई नहीं है तो प्रारंभ करें)।

एक बार जो तय हो जाता है, मैं बस docker stack deployअपनी स्थानीय मशीन से करता हूं या अपनी जरूरत की हर चीज के साथ स्टैक को तैनात करने के लिए बॉक्स का निर्माण करता हूं।

मेरे मामले में मैंने सिर्फ सरल पोस्ट इंस्टॉलेशन स्क्रिप्ट्स का उपयोग करने के पक्ष में शेफ को गिरा दिया जो मेरे प्रावधान स्क्रिप्ट के रूप में yumया apt-getपर हैं।

मैं नष्ट करने से पहले अतिरिक्त स्क्रिप्टिंग को जोड़ने के लिए आवारा-ट्रिगर प्लगइन का उपयोग करता हूं (झुंड को छोड़ने के लिए मेरे मामले में)।

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

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