शेफ-सोल के बजाय शेफ-सर्वर चलाने के क्या लाभ हैं?


33

मैं अपनी टीम के लिए स्वचालित तैनाती समाधान देख रहा हूं और पिछले कुछ दिनों से शेफ के साथ खेल रहा हूं। मैं एक साधारण वेब ऐप को शेफ-सोल का उपयोग करके एक बेस रेड हैट वीएम से चलाने में सक्षम हो गया हूं।

हमारा अंतिम लक्ष्य बावर्ची (या एक अन्य प्रणाली) का उपयोग करके क्लाउड पर एप्लिकेशन टोपोलॉजी को स्वचालित रूप से तैनात करने का है, जैसा कि हम बनाता है। हमारी प्रक्रिया मूल रूप से इस तरह चलेगी:

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

शेफ सर्वर चल पाने के क्या लाभ और / या मामले हैं?

क्या शेफ सर्वर होल्ड रखने और SCM बनाम शेफ-सोल का उपयोग करने और SCM से कुकबुक को खींचने वाली स्क्रिप्ट होने का कोई बड़ा लाभ है?

जवाबों:


67

मैं इस उत्तर को उन्मुख करने जा रहा हूं जैसे कि प्रश्न था "शेफ-सोलो के फायदे क्या हैं" क्योंकि यह सबसे अच्छा तरीका है जो मैं दृष्टिकोणों के बीच के अंतर को कवर करना जानता हूं।

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

यदि आप शेफ-सोलो को तैनात करते हैं, तो rsync, 'गिट पुल', या कुछ अन्य बेकार फ़ाइल स्थानांतरण तंत्र के साथ एक क्रोनजॉब का उपयोग करें प्रत्येक नोड पर शेफ रिपॉजिटरी की पूरी प्रतिलिपि बनाए रखने के लिए। क्रोनजॉब को आसानी से (ए) बिल्कुल नहीं चलाया जाना चाहिए और (बी) रन नहीं, लेकिन स्थानीय रिपॉजिटरी को सिंक किए बिना। प्रत्येक नोड के लिए एक json फ़ाइल के साथ अपने महाराज भंडार में एक नोड / निर्देशिका जोड़ें। आपका क्रोनजॉब उतना ही परिष्कृत हो सकता है जितना आप सही नोडफाइल की पहचान करने के संदर्भ में चाहते हैं (हालांकि मैं केवल $ $ (hostname -s) की सिफारिश करूंगा। आप भी एक opscode खाता बना सकते हैं और होस्ट किए गए शेफ के साथ क्लाइंट कॉन्फ़िगर कर सकते हैं, यदि इसके लिए सामुदायिक कुकबुक डाउनलोड करने और कंकाल बनाने के लिए चाकू का उपयोग करने में सक्षम होने के अलावा कोई अन्य कारण नहीं है।

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

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

इसके अतिरिक्त, शेफ-सोल के साथ आप अपने सभी नोड्स की भूमिकाओं, कस्टम विशेषताओं और runlists को अपने मुख्य शेफ रिपॉजिटरी में नोड.जेसन फ़ाइलों के रूप में संग्रहीत कर सकते हैं। शेफ-सर्वर के साथ, भूमिकाओं और रनलिस्ट को एपीआई का उपयोग करके मक्खी पर संशोधित किया जाता है। शेफ-सोलो के साथ, आप इस जानकारी को संशोधन नियंत्रण में ट्रैक कर सकते हैं। यह वह जगह है जहाँ स्थिर और गतिशील वातावरण के बीच संघर्ष स्पष्ट रूप से देखा जा सकता है। यदि आपकी नोड्स की सूची (चाहे वह कितनी भी लंबी हो) अक्सर बदलती नहीं है, तो पुनरीक्षण नियंत्रण में यह डेटा होना बहुत उपयोगी है। दूसरी ओर, यदि आप बार-बार नए नोड्स पैदा कर रहे हैं और पुराने को नष्ट कर रहे हैं (कभी भी उनके hostname या fqdn को देखने के लिए नहीं) तो यह सब संशोधन नियंत्रण में रखना सिर्फ एक अनावश्यक परेशानी है, और बदलाव करने के लिए एपीआई होना बहुत सुविधाजनक है। शेफ-सर्वर में डायनामिक क्लाउड वातावरण को प्रबंधित करने की दिशा में एक संपूर्ण विशेषता है, जैसे "चाकू बूटस्ट्रैप" पर नाम विकल्प जो आपको नोड की पहचान करने के लिए डिफ़ॉल्ट तरीके के रूप में fqdn को बदलने देता है। लेकिन एक स्थिर वातावरण में, वे विशेषताएं सीमित मूल्य की होती हैं, विशेष रूप से सब कुछ के साथ संशोधन नियंत्रण में भूमिकाएं और रनवेस्ट होने की तुलना में।

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

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

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

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


आप शेफ-सोल के साथ संवेदनशील डेटा (अर्थात: निजी कुंजी / पासवर्ड) को कैसे स्टोर / वितरित करेंगे? मैं इसे प्लेनटेक्स्ट के रूप में संग्रहीत किए बिना संशोधन नियंत्रण के साथ कैसे ट्रैक करूं?
लिम्बो पेंग

@LimboPeng आप शेफ रेपो में एन्क्रिप्टेड डेटा बैग को स्टोर कर सकते हैं। आपको एन्क्रिप्शन कुंजी को बाहरी रूप से संग्रहीत करना होगा।
विली व्हीलर

27

प्रकटीकरण: मैं Opscode के लिए काम करता हूं।

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

शेफ सर्वर आपको प्रबंधन कंसोल के साथ अपने बुनियादी ढांचे की कल्पना करने और वातावरण के साथ कुकबुक के कौन से संस्करण चला रहा है, यह प्रबंधित करने के लिए प्रबंधन करने की क्षमता देता है। अन्य लाभ हैं, लेकिन वे मेरे सिर के ऊपर से हैं। यदि आप इसे स्थापित किए बिना बावर्ची सर्वर को आज़माना चाहते हैं, तो बस एक Opscode Hosted बावर्ची खाते के लिए साइन अप करें, पहले 5 नोड्स मुफ्त हैं।


1
धन्यवाद mray, यह जानकारी एक TON की मदद करती है। क्या आप जानते हैं कि शेफ सर्वर का उपयोग करते समय कैसे कोई DevOps दर्शन को गले लगाएगा? मेरे कहने का मतलब यह है कि हमारे सभी कुकबुक SCM में रहते हैं। क्या हमारे पास नया कोड देने के लिए शेफ सर्वर को अपडेटेड कुकबुक प्राप्त करने का एक आसान तरीका है?
linusthe3rd

2
@ strife25 आपको एक संस्करण नियंत्रण प्रणाली में अपनी कुकबुक जरूर होनी चाहिए । यदि आप एक के लिए निपुण नहीं हैं, तो Opscode Git की सिफारिश करता है क्योंकि वितरित टीमों के लिए शाखाओं और चट्टानों के साथ काम करना आसान है। आप एक पोस्ट-कम हुक लिख सकते हैं जो रसोइया को शेफ सर्वर पर अपलोड करता है। आप शेफ सर्वर पर केवल कुकबुक को क्लोन नहीं करते हैं क्योंकि आप उन्हें एपीआई के माध्यम से अपलोड करते हैं, और यह डिजाइन द्वारा उद्देश्य पर बहुत अधिक है।
jtimberman

1

शेफ-सर्वर आपके नोड्स के लिए कुकबुक और कॉन्फ़िगरेशन डेटा का प्रबंधन करता है।

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

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

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