शेफ सर्वोत्तम अभ्यास / प्रश्न


48

मैं पपेट का उपयोग और प्यार करता हूं। मैं एक नई कंपनी में चला गया और वे बावर्ची को गोद ले रहे हैं। इसलिए मैं शेफ को सीखने की कोशिश कर रहा हूं, लेकिन यह सब एक साथ करने में मुश्किल समय है क्योंकि मैं अभी भी कठपुतली में सोचता हूं =)

ये मेरे सवाल हैं:

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

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

ऑप्सकोड पर डॉक्स ठीक हैं, लेकिन पुपेट के रूप में लगभग महान नहीं हैं। क्या कोई अन्य अच्छा बावर्ची संसाधन हैं जो मैं अपनी खोजों में गायब हो सकता हूं?


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

जवाबों:


84

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

इस जवाब में, "शेफ" या "शेफ-क्लाइंट" आमतौर पर उत्पाद को शेफ इंफ्रा को संदर्भित करता है। 2013 में Opscode का नाम बदलकर Chef Software, Inc कर दिया गया । में अप्रैल, 2019, बावर्ची स्रोत कोड खोला , अपने सभी उत्पादों के लिए संगत ब्रांड नामकरण बनाने के साथ।

यह स्पष्ट नहीं है कि रूबी डीएसएल, जेएसएन या प्रबंधन कंसोल से भूमिकाओं को सेटअप करना बेहतर है या नहीं? एक ही काम करने के कई तरीके क्यों हैं?

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

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

रून्स के लिए रूबी डीएसएल, JSON के सिंटैक्स को जाने बिना भूमिकाएं लिखना आसान बनाने के लिए मौजूद है। यह रोल्स के साथ आरंभ करने का एक सरल तरीका है। एक बार जब आप परिवर्तन कर लेते हैं, तो आप उन्हें चाकू के साथ शेफ सर्वर पर अपलोड करते हैं।

knife role from file myrole.rb

यह JSON की भूमिका को परिवर्तित करता है और इसे सर्वर पर संग्रहीत करता है। यदि आपके पास एक ऐसा वातावरण है जो शेफ रिपॉजिटरी को लागू करता है जहां आपकी भूमिकाएं सच्चाई के स्रोत के रूप में रहती हैं, तो यह काफी अच्छी तरह से काम करता है।

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

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

knife role show myrole -Fj

-Fj"JSON प्रारूप में प्रदर्शन।" करने के लिए चाकू बताता है यदि आप चाहें तो आउटपुट को .json फ़ाइल में पुनर्निर्देशित कर सकते हैं।

वर्षों पहले अद्यतन : स्थानीय शेफ भंडार में फ़ाइलों के साथ काम करने के लिए अतिरिक्त चाकू आदेश हैं। वर्तमान में ये आदेश केवल JSON प्रारूप फ़ाइलों का समर्थन करते हैं। एक समुदाय RFC खुला है जो इन प्लगइन्स के लिए रूबी डीएसएल के लिए समर्थन जोड़ने को संबोधित करेगा। यहाँ वर्कफ़्लो का एक संक्षिप्त सारांश दिया गया है।

सर्वर और स्थानीय फ़ाइल के बीच सामग्री अंतर की जाँच करें।

knife diff roles/myrole.json

JSON स्वरूपित भूमिका फ़ाइल अपलोड करें। roles/पथ की आवश्यकता है। यह सर्वर पर समान API समापन बिंदु पर मैप हो जाता है।

knife upload roles/myrole.json

सर्वर से सामग्री को रिपॉजिटरी में फ़ाइल की सामग्री को ओवरराइट करके डाउनलोड करें।

knife download roles/myrole.json

ये कमांड आते हैं knife-essentials, जो शेफ क्लाइंट पैकेज में बनाया गया है।

क्या आप उप-श्रेणियों में कुकबुक को व्यवस्थित कर सकते हैं? जैसे- हमारे पास कस्टम सॉफ्टवेयर है जिसके लिए मैं एक रसोई की किताब लिखना चाहता हूँ और उसमें रहना चाहता हूँ: शेफ-रेपो / कुकबुक / हमारी कंप्यूटर / कस्टमफॉरस्कूकबुक यह एक अच्छा अभ्यास होगा?

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

कन्वेंशन द्वारा हम ग्राहक विशिष्ट या साइट विशिष्ट कुकबुक को रसोई की किताब के नाम से उपसर्ग के साथ नाम देते हैं। आपके उदाहरण के लिए, यह होगा:

chef-repo/cookbooks/ourcompany_customsoftware

"Ourcompany" के लिए कई अलग-अलग कुकबुक हो सकते हैं जो आप कर रहे हैं उसके आधार पर।

आगे संदर्भ:

क्या मैं प्रत्येक प्रकार की भूमिका के लिए एक रसोई की किताब बनाता हूं जो यह निर्दिष्ट करती है कि वह क्या करती है? क्या मेरे पास इन रसोई की किताबों में अन्य रसोई की किताबें शामिल हैं (यानी- मेरी वेबसर्वर भूमिका के लिए रसोई की किताब में अपाचे रसोई की किताब भी शामिल है)। मुझे यकीन नहीं है कि कुकबुक अंतर-निर्भरता और विरासत को कैसे संभाला जाता है।

भूमिकाओं और रसोई की किताबों के बीच कोई सीधा संबंध या निर्भरता नहीं है।

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

recipe[apache2]

शेफ apache2नोड के लिए कुकबुक डाउनलोड करेगा ताकि यह नुस्खा लागू कर सके।

आपके पास अपने बुनियादी ढांचे में एक भूमिका के लिए एक रसोई की किताब विशिष्ट हो सकती है। आम तौर पर आपके पास कुछ विशेष प्रकार की सेवाएँ जैसे कि Apache2, mysql, redis, haproxy इत्यादि स्थापित करने के लिए कुकबुक होंगी, तब आप उन लोगों को उपयुक्त भूमिकाओं में डाल देंगे। यदि आपके पास कस्टम एप्लिकेशन विशिष्ट चीजें हैं जो एक भूमिका को पूरा करने के लिए होने की आवश्यकता है, तो आप इसे एक कस्टम कुकबुक में लिख सकते हैं (जैसे मैंने संदर्भित किया है)।

आगे संदर्भ:

वहाँ कठपुतलियों बाहरी नोड वर्गीकारक की तरह कुछ है तो नोड्स स्वचालित रूप से अपनी भूमिका निर्धारित करते हैं?

"हाँ।" बावर्ची इन्फ्रा सर्वर नोड डेटा भंडारण (JSON में) स्वचालित रूप से करता है, और सर्वर भी स्वचालित रूप से खोज के लिए सभी नोड डेटा अनुक्रमित करता है।

आगे संदर्भ:

ऐसा लगता है कि आप चाकू के साथ या प्रबंधन कंसोल के भीतर या JSON फ़ाइलों को संपादित कर सकते हैं? यह मेरे लिए सुपर भ्रामक है कि चीजों को करने के कई तरीके क्यों हैं, यह पंगु है! क्या एक या दूसरे का उपयोग करने का कोई कारण है?

शेफ इंफ्रा सर्वर में एक RESTful API है जो JSON प्रतिक्रियाएँ भेजता और प्राप्त करता है। चाकू और प्रबंधन कंसोल एक प्रशासन के दृष्टिकोण से एपीआई के साथ बातचीत करने के लिए उपयोगकर्ता इंटरफेस हैं।

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

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

आगे की पढाई:

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

आप चाकू बूटस्ट्रैप प्लगइन का उपयोग करना चाहते हैं। यह एक बिल्ट इन प्लगइन है जो चाकू के साथ आता है। आप इसे इस तरह लागू करते हैं:

knife bootstrap 10.1.1.112 -x root -i ~/.ssh/root_id_rsa -r 'role[webserver]'

यह करेगा:

  • SSH लक्ष्य प्रणाली (10.1.1.112) के लिए rootSSH कुंजी का उपयोग करने वाले उपयोगकर्ता के रूप में (आप किसी अन्य उपयोगकर्ता के रूप में ssh कर सकते हैं और फिर उपयोग कर सकते हैं --sudo)।
  • रूबी स्थापित करें
  • बावर्ची स्थापित करें
  • चाकू के विन्यास (.chef / चाकू.rb) को पढ़ते हुए, अपने बावर्ची सर्वर के लिए बावर्ची विन्यास फाइल बनाएँ।
  • "सत्यापन" RSA निजी कुंजी की प्रतिलिपि बनाएँ, जो नोड बावर्ची सर्वर के साथ स्वचालित रूप से पंजीकरण करने के लिए उपयोग करेगा।
  • chef-clientनिर्दिष्ट सूचीबद्ध अल्पविराम द्वारा चलाए गए रन का उपयोग करके चलाएँ । इस उदाहरण में केवल webserverभूमिका लागू होती है।

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

नाइफ के पास कई सार्वजनिक क्लाउड कंप्यूटिंग प्रदाताओं जैसे अमेज़ॅन ईसी 2 और रैकस्पेस क्लाउड के लिए प्लगइन्स भी हैं। नीलगिरी और ओपनस्टैक जैसे निजी क्लाउड वातावरण के लिए प्लगइन्स उपलब्ध हैं। VMware, Vsphere और अन्य के लिए प्लगइन्स भी हैं। आप दस्तावेज़ में आगे की जानकारी देख सकते हैं।

आगे की पढाई:

क्या कोई और अच्छा शेफ संसाधन है जो मैं अपनी खोजों में गायब हो सकता हूं?

बावर्ची प्रलेखन प्रलेखन का प्राथमिक स्रोत।

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

मैं एक ब्लॉग का रखरखाव करता था, जहाँ मैंने शेफ इन्फ्रा के बारे में टिप्स, ट्रिक्स और गाइड पोस्ट किए थे: http://jtimberman.housepra.org/ । मेरे पास " क्विक टिप्स " नामक एक श्रृंखला थी । वास्तविक जीवन की परिस्थितियों और अन्य प्रतिबद्धताओं के कारण, अब मेरे पास साइट को बनाए रखने के लिए समय नहीं है, लेकिन मैं भविष्य में इसे वापस कर सकता हूं।

शेफ ग्राहकों को सहायता और समर्थन साइट पर सहायता मिल सकती है:

बावर्ची उपयोगकर्ता समुदाय अतिरिक्त मदद का एक उत्कृष्ट स्रोत है:

अतिरिक्त संसाधन बावर्ची सॉफ्टवेयर, इंक की वेब साइट पर उपलब्ध हैं ।

आशा है कि ये आपकी मदद करेगा।


2
यह एक मूल्यवान संसाधन है, कृपया इसे अधिक बार लिंक करें।
पूयण खोसरावी

7 साल बाद जोड़ने / अद्यतन करने के लिए कुछ भी? ;)
स्पेसल
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.