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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

    एक कुंजी कार्यक्षमता के OpenStack है, अपने समर्थन के लिए कई वर्चुअलाइजेशन प्रौद्योगिकियों, से पूरी तरह से वर्चुअलाइज्ड (VirtualBox, VMWare) के लिए, पैरावर्चुअलाइज्ड (वी एम/Qemu) और भी कंटेनर (LXC) और यहां तक कि उपयोगकर्ता मोड लिनक्स (यूएमएल).

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

आपके प्रोजेक्ट के दायरे में आपको कितनी कार्यक्षमता की आवश्यकता है, इसे परिभाषित किया जाना चाहिए ।

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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