क्या कॉन्फ़िगरेशन प्रबंधन उपकरण परिनियोजन उपकरण के रूप में उपयोग करने के लिए उपयुक्त हैं?


10

प्रश्न के मेरे उत्तर के पीछे : DevOps सॉफ्टवेयर एस्क्रो प्रक्रियाओं को बेहतर बनाने में कैसे मदद कर सकता है? टेन्सीबाई का सवाल था:

कठपुतली या रसोइये के ऊपर कैपिस्ट्रानो की क्या आवश्यकता होगी?

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

  • तैनाती के लिए कैपिस्ट्रानो जैसे विशेषज्ञ तैनाती उपकरण का उपयोग करें।
  • कॉन्फ़िगरेशन प्रबंधन के लिए शेफ जैसे विशेषज्ञ कॉन्फ़िगरेशन प्रबंधन टूल का उपयोग करें।

अपने कार्य को पूरा करने के लिए प्रत्येक प्रकार का उपकरण जिस मूलभूत दृष्टिकोण का उपयोग करता है वह बहुत अलग है:

  • कॉन्फ़िगरेशन प्रबंधन उपकरण - एक सिस्टम की वांछित स्थिति बनाने और बनाए रखने के बारे में हैं, वे स्वाभाविक रूप से स्वभाव से उदासीन हैं। विन्यास प्रबंधन उपकरणों के उदाहरण बावर्ची , कठपुतली , Ansible , PowerShell DSC , साल्ट स्टैक हैं

  • परिनियोजन उपकरण - एक होस्टिंग वातावरण में सॉफ़्टवेयर के संस्करणों को वितरित करने के बारे में हैं, वे कई मशीनों पर सॉफ़्टवेयर के कई संस्करणों को बनाए रखने के लिए कार्यक्षमता प्रदान करते हैं और प्रबंधित करते हैं कि कौन सा संस्करण "वर्तमान" है, वे स्वाभाविक रूप से अनिवार्य हैं। परिनियोजन उपकरण के उदाहरण Capistrano , Octopus Deploy , Deployer और Command.io हैं

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

प्रश्न: क्या शेफ, अंसिबल और कठपुतली जैसे विन्यास प्रबंधन उपकरण इस बात के लिए परिपक्व हैं कि वे दोनों आदर्श और अनिवार्य मॉडल को पूरा करने में सक्षम हैं?


हमेशा हमेशा के लिए, कठपुतली 4.0 के बाद से
जेरी क्लौडा

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

@JiriKlouda आपका स्वागत से अधिक है, काफी शाब्दिक रूप से मेरे कंप्यूटर पर "DevOps SE" पोस्ट-इट ™ है, जब वे मन में आते हैं तो मुझे प्रश्नों को पोस्ट करने के लिए याद दिलाने के लिए।
रिचर्ड स्लेटर

जवाबों:


10

ऐसे संदर्भ में विशिष्ट सलाह तुरंत लागू होनी चाहिए: नौकरी के लिए सही उपकरण का उपयोग करें।

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

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

इस कारण यह संभव है कि सॉफ्टवेयर विकास की प्रक्रिया के संपूर्ण भागों को कवर किया जाए / कई टूल (सेट) द्वारा ओवरलैप किया जाए, भले ही उनकी मुख्य विशेषता / क्षमता भिन्न हो।

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

इस सवाल को मुख्य रूप से राय आधारित बनाना;)


मैं पूरी तरह से सहमत! अधिक से अधिक संगठन "DevOps toolchain" को विशेष रूप से नौकरी के विचार के लिए इस सही उपकरण के साथ विकसित कर रहे हैं। अधिक जानकारी के लिए यह विकी पृष्ठ विभिन्न उपकरणों / नौकरियों के बारे में बात करते हुए एक अच्छा काम करता है: en.wikipedia.org/wiki/DevOps_toolchain
कार्ल हरनागी

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

6

सिस्टम को एक ज्ञात स्थिति में लाने के लिए कॉन्फ़िगरेशन प्रबंधन टूल का उपयोग किया जाता है। परिनियोजन उपकरण एक सिस्टम में नई प्रोग्राम फाइल्स और प्रोग्राम डेटा को तैनात करते हैं। दिन के अंत में, दोनों प्रकार के उपकरण कुछ संयोजन करते हैं:

  • सिस्टम की वर्तमान स्थिति का निर्धारण करें।
  • फाइल को सिस्टम में ट्रांसफर करें।
  • लगातार डेटा जोड़ें या बदलें (जैसे कॉन्फ़िगरेशन फ़ाइलें, डेटाबेस डेटा, रजिस्ट्री सेटिंग्स)
  • कार्यक्रम शुरू करें या पुनः आरंभ करें।

कॉन्फ़िगरेशन प्रबंधन टूल में घोषणात्मक भाषाएं हैं जो सिस्टम की स्थिति को निर्दिष्ट करती हैं। परिनियोजन उपकरण में अनिवार्य भाषाएं होती हैं जो चीजों को करने के लिए सिस्टम को बताती हैं। एक DevOps व्यक्ति को दोनों करने की जरूरत है।

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

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

कुछ लोग एक उपकरण के साथ दोनों तरह के काम करना पसंद करते हैं, और मोटे किनारों के आसपास काम करना पसंद करते हैं। अन्य लोग लगभग एक ही काम करने के लिए दो उपकरण रखना पसंद करते हैं, लेकिन किसी न किसी किनारों के बिना। प्रश्न का उत्तर देने के लिए, "उपयुक्तता" स्वाद का मामला है। यह उत्तर बताता है कि क्यों।


मैं इस मामले के लिए Capistrano थोड़ा अजीब होने पर सहमत हूं। यह आमतौर पर ssh पर दूरस्थ रूप से निष्पादित रूबी लिपियों / स्निपेट्स / लैम्ब्डा के लिए नेमस्पेस के रूप में उपयोग किया जाता है। अन्सिबल पर आपका सेक्शन सही नहीं है। आप इसे थोड़ा शोध करके ठीक करना चाह सकते हैं। अच्छी पहली पोस्ट, लेकिन कृपया इस पर थोड़ा और काम करें।
जिरी क्लौडा

@JiriKlouda क्या Ans सेक्शन में गलत है? क्या आपका मतलब उस खंड no easy way to check if the web server has been restartedमें है जिसे एक चर दर्ज करके जांचा जा सकता है?
डेविड वासंदनी

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

4

TL; DR : बस Ansbile का उपयोग करें, यह विन्यास और परिनियोजन उपकरण दोनों है :)

तैनाती के कई प्रकार हैं:

  • अनुप्रयोग आधारित (फ़ाइलें, अभिलेखागार पैकेज)

  • कंटेनर आधारित (VMs, पर्यावास, LXC, Docker शामिल हैं)

  • फंक्शन आधारित (माइक्रो सर्विसेज / लैम्ब्डा / फंक्शन्स)

मेरा मानना ​​है कि इस मामले में हम सर्वर (एस) पर केवल एप्लिकेशन अपडेट के बारे में बोलते हैं।


परिनियोजन के लिए आपको दो काम करने होंगे:

  1. सही फाइल या पैकेज को सर्वर पर ले जाने की जरूरत है।
  2. कॉन्फ़िगरेशन और सेवा राज्यों को बदलने की आवश्यकता है।

अब (1) के लिए आप कई रणनीतियों का उपयोग कर सकते हैं:

  • विरूपण साक्ष्य रिपोजिटरी / सिंकिंग
  • पैकेज रिपोजिटरी / पैकेज प्रबंधक
  • संस्करण नियंत्रण प्रणाली / अद्यतन + संकलन (वैकल्पिक रूप से)
  • फ़ाइल स्थानांतरण प्रोटोकॉल (scp, rsync, ftp)
  • परिनियोजन उपकरण

(2) के लिए आप उपयोग कर सकते हैं:

  • कॉन्फ़िगरेशन प्रबंधन उपकरण
  • परिनियोजन उपकरण

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

से व्यक्तिगत अनुभव है, मैं सभी संयोजनों का उपयोग किया है, लेकिन वर्तमान में हम तैनाती और विन्यास प्रबंधन के लिए Ansible सिंक, और VCS और फ़ाइल स्थानांतरण के लिए पैकेज खजाने के लिए Capistrano का उपयोग, लेकिन वहाँ Capistrano में समस्याएं हैं और हम इसे से दूर स्थानांतरित करने के लिए कर रहे हैं रंदा परिनियोजन, रखरखाव और कॉन्फ़िगरेशन प्रबंधन दोनों के लिए Ansible पर एकीकृत करें।


2
अन्सिबल और कैपिस्ट्रानो के साथ मेरा अनुभव मुझे उसी निष्कर्ष पर ले जाएगा। मैं सिर्फ Ansible के साथ जाऊँगा। और अंसिबल के बारे में अच्छी बात यह है कि इसकी "वांछित राज्य" घोषणाएं अंतर्निहित अनिवार्य आदेशों को बहुत अच्छी तरह से दर्शाती हैं।
जय गोडसे

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

3

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

तो, मूल रूप से, आपको उन टुकड़ों के लिए दोनों का उपयोग करना चाहिए जो वे सबसे अच्छे हैं।


3

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

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

अमेज़ॅन वेब सेवाओं के लिए, यह सबसे अधिक भाग के लिए एपीआई द्वारा आसानी से प्रबंधनीय है, लेकिन हममें से जिन्हें अपने स्वयं के डेटा केंद्रों का प्रबंधन करना है, यह कोई विकल्प नहीं है। इस कारण से फोरमैन परियोजना (और रेड हैट जो फिर से ब्रांड इस ) यह आवश्यक बंडल करने पाया है Katello , Candlepin ऐसे Ansible, फोरमैन या कठपुतली के रूप में और एक विन्यास प्रबंधक एक साथ जब तैनाती Katello परिदृश्य

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


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

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

या पैकेजों के विशिष्ट संस्करणों को पिन या परिनियोजित करने के लिए, उन पैकेजों को शामिल करें जो अपस्ट्रीम रेपो या मैशअप रेपो में नहीं हैं। मेरा कहना है कि अगर Red Hat / The Foreman / Katello ने महसूस किया कि यह सिर्फ एक विन्यास प्रबंधन प्रणाली के साथ नहीं किया जा सकता है - सबसे विशेष रूप से क्योंकि इसमें प्रावधान / तैनाती का अभाव था जो ध्यान देने योग्य है।
जेम्स शेवेई

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