जवाबों:
एक डोमेन-विशिष्ट भाषा आपके द्वारा लिखे गए कोड की मात्रा में बड़ा अंतर करती है। उदाहरण के लिए, आप तर्क दे सकते हैं कि इसमें बहुत अंतर नहीं है:
chmod 640 /my/file
तथा
file { "/my/file":
mode => 640,
}
लेकिन इनमें से बहुत अंतर है:
FILE=/my/file
chmod 640 $FILE
chown foo $FILE
chgrp bar $FILE
wget -O $FILE "http://my.puppet.server/dist/$FILE"
# where the URL contains "Hello world"
तथा
file { "/my/file":
mode => 640,
owner => foo,
group => bar,
content => "Hello world",
}
क्या होता है अगर wget फेल हो जाता है? आपकी स्क्रिप्ट को कैसे संभालेंगे? और क्या होता है अगर आपकी स्क्रिप्ट में कुछ ऐसा है जिसके लिए सही सामग्री के साथ $ FILE की आवश्यकता होती है?
आप तर्क दे सकते हैं कि कोई भी echo "Hello world" > $FILE
स्क्रिप्ट में डाल सकता है , सिवाय इसके कि पहले उदाहरण में स्क्रिप्ट क्लाइंट पर चलाई जानी चाहिए, जबकि कठपुतली सर्वर पर यह सब संकलित करती है। इसलिए यदि आप सामग्री बदलते हैं, तो आपको केवल सर्वर पर इसे बदलना होगा और इसे उतने सिस्टम के लिए बदलना होगा जितना आप इसे डालना चाहते हैं। और कठपुतली निर्भरता को संभालती है और स्वचालित रूप से आपके लिए समस्याएं स्थानांतरित करती है।
कोई तुलना नहीं है - उचित कॉन्फ़िगरेशन प्रबंधन उपकरण आपको समय और जटिलता से बचाते हैं। जितना अधिक आप करने की कोशिश करते हैं, उतनी ही शेल स्क्रिप्ट अपर्याप्त लगती हैं, और जितना अधिक प्रयास आप इसे कठपुतली के साथ करके बचाएंगे।
यह एक अलोकप्रिय राय होगी, लेकिन विन्यास प्रबंधन प्रणाली जरूरी बेहतर नहीं है। कभी-कभी सरल वास्तव में सबसे अच्छा होता है।
आपके द्वारा चुने गए कॉन्फ़िगरेशन सिस्टम के साथ एक निश्चित सीखने की अवस्था और प्रशासनिक ओवरहेड है। आप सब पर निर्भरता का परिचय देने के बाद हैं। किसी भी स्वचालन के साथ आपको यह भी ध्यान रखना चाहिए कि तैनात विन्यास में सुरक्षा बनी रहती है।
मेरे पास केवल कुछ उदाहरण हैं जहां हमने कॉन्फ़िगरेशन प्रबंधन को तैनात किया है और यह अटक गया है। यह हमेशा होता था जब पुनरावृत्ति विन्यास के साथ बड़ी संख्या में सिस्टम थे और विन्यास योग्य कुकी-कटर की तैनाती की आवश्यकता थी।
आपने अपने प्रश्न का उत्तर दिया है ...
स्वचालन अधिक स्केलेबल और औपचारिक होता जा रहा है । कठपुतली और बावर्ची इन दिनों मानक माने जाते हैं ( नौकरी विज्ञापनों की जाँच करें )।
कोब्लेड-एक साथ शेल स्क्रिप्ट का स्थान है, लेकिन वे DevOps आंदोलन के संदर्भ में मापनीय नहीं हैं । पठनीयता उसी का हिस्सा है।
शेफ ने एक जटिल बुनियादी ढांचे के सेटअप को प्रबंधित करना और संस्करण बनाना बहुत आसान बना दिया है , विशेष रूप से किसी भी प्रकार के क्लाउड वातावरण में बनाम मैन्युअल रूप से एफ़टीपी या एक अनियंत्रित फैशन में आयोजित शेल स्क्रिप्ट का एक गुच्छा तैयार करना। इस बात पर निर्भर करता है कि आपको कितनी निर्भरता का प्रबंधन करने की आवश्यकता है, इस जीत का आकार बहुत भिन्न हो सकता है, जिससे सीएम समाधान को स्थानांतरित करने का निर्णय बहुत से लोगों के लिए गैर-स्पष्ट हो सकता है।
शेफ का वास्तविक (अक्सर अनसुना) लाभ आलस्य है । अतिव्यापी हितों के साथ चलने वाले व्यंजनों के संयोजन की परवाह किए बिना एक संसाधन की स्थिति के कुछ सक्षम होने के नाते शेल स्क्रिप्ट कॉन्फ़िगरेशन पर एक बड़ा लाभ है। यदि आपके पास अब कॉन्फ़िगरेशन के लिए शेल स्क्रिप्ट हैं, तो अपने आप से पूछें कि उनमें से कितने बिना अनपेक्षित / अवांछनीय परिणामों के बिना कई बार चलाए जा सकते हैं?
एक उचित सीएम समाधान क्रॉस-प्लेटफॉर्म स्वचालन और टीम सहयोग को सरल बनाकर पैमाने पर सफलता सुनिश्चित करने में मदद करता है। हालांकि, यह सब एक अच्छी तरह से व्यवस्थित, ठीक से बनाए रखा, शेल स्क्रिप्ट के संस्करण के साथ पूरा करना संभव है; आपको अपने आप से "क्यों" पूछना है। शेफ / कठपुतली और इसी तरह की तकनीकों के बारे में आया क्योंकि प्रतिभाशाली SysOps का एक समूह बार-बार इन समान समस्याओं को हल करने के लिए थक गया था और हमें बेहतर विकल्प देने के लिए तैयार हो गया था।
कठपुतली और बावर्ची जैसे आधुनिक कॉन्फ़िगरेशन प्रबंधन उपकरण आपको कॉन्फ़िगर सर्वर को प्राप्त करने के लिए आवश्यक गतिविधियों के बारे में चिंता करने के बजाय एक सिस्टम की स्थिति को परिभाषित करने की अनुमति देते हैं ।
उदाहरण के लिए, आपका chmod कमांड मानता है कि फ़ाइल मौजूद है, फ़ाइल का मालिक उपयोगकर्ता मौजूद है, निर्देशिकाओं को बनाया गया है, और इसी तरह। इसलिए आपकी स्क्रिप्ट को इन सभी आवश्यक शर्तों पर विचार करना चाहिए।
राज्य-आधारित कॉन्फ़िगरेशन प्रबंधन उपकरण सरल हैं: आप केवल इस बात का ध्यान रखते हैं कि फ़ाइल की सही अनुमति हो। कैसे हासिल किया जाता है कि उपकरण की समस्या है।
chmod
अनुमान नहीं है कि फ़ाइल मौजूद है क्योंकि स्क्रिप्ट द्वारा फ़ाइल का निर्माण या परीक्षण किया गया था।
यदि सर्वर आपके लिए डिस्पोजेबल हैं, या आपके पास एक समय में एक जोड़े से अधिक खड़े होने का कारण है, तो एक पूर्ण विकसित सीएम सिस्टम शेल स्क्रिप्ट की एक श्रृंखला की तुलना में आपकी आवश्यकताओं को पूरा करेगा।
यदि आपकी निर्माण की जरूरतें मामूली हैं, (या कारीगर के लिए हाथ से तैयार किए गए ऑर्गेनिक फ्री-रेंज फेयर-ट्रेड सर्वर) पसंद करते हैं, तो आप इसे सरल रखें।
व्यक्तिगत रूप से, पिछले टमटम में बड़े पैमाने पर शेफ का इस्तेमाल करते हुए, मैंने इस टमटम में 'इसे सरल रखने' का प्रयास किया था, लेकिन मैं वास्तव में आदिम, अमूर्त और शक्ति से चूक गया था जिसे शेफ ने प्रदान किया था। यहां तक कि अगर आप एक ऐसी स्थिति में पहुंचते हैं, जहां आपको कुछ भी मिल सकता है, जो आपको शेल शेल कमांड से चाहिए, तो आप बस 'कमांड' ब्लॉक के साथ चला सकते हैं, अपने शेल कमांड में ठीक उसी तरह से प्रवेश करते हैं जैसे आप उन्हें शेल में लिखते हैं।
इसके साथ ही, आप शेफ को बिना सर्वर (शेफ-सोलो) के चला सकते हैं, और मुझे पूरा यकीन है कि पपेट के पास एक एनालॉग है, जहां आप केंद्रीय सर्वर को चलाए बिना भी दूसरों की कुकबुक और रेसिपी का लाभ उठा सकते हैं।
एक अन्य लाभ समुदाय है: बहुत सारे लोग हैं (जिनमें से कई आपके मुकाबले अधिक स्मार्ट और / या अधिक अनुभवी होंगे)। व्यक्तिगत रूप से मुझे यह पसंद है जब किसी और ने मेरे लिए अपना काम किया है, तो अक्सर मेरे मुकाबले अधिक बड़े पैमाने पर।
मैंने एक शेल स्क्रिप्ट-आधारित सर्वर ऑटोमेशन फ्रेमवर्क बनाया: https://github.com/myplaceonline/posixcube
मुझे यकीन है कि मैं इस तरह की परियोजना बनाने वाला पहला व्यक्ति नहीं हूं, लेकिन मुझे अपनी आवश्यकताओं को पूरा करने के लिए ऐसा कुछ नहीं मिला, इसलिए मुझे लगा कि दूसरों को यह उपयोगी लग सकता है। मुझे केवल शेफ के साथ अनुभव था, लेकिन जैसा कि मैंने अंसिबल और अन्य लोगों के चारों ओर देखना शुरू किया, मैं शेल स्क्रिप्ट को एक शॉट देना चाहता था, और मुझे अब तक का परिणाम पसंद है।