2013-02-14 52 views
9

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

ईआरबी टेम्पलेट्स के साथ, पूरी फाइलों को तैनात क्यों किया जाता है, पसंदीदा विधि माना जाता है?

आप कई उदाहरण पा सकते हैं जहां dev-ops फ़ाइल-संपादन के बजाय टेम्पलेट्स का उपयोग करने का सुझाव दे रहे हैं। उदाहरण here, here, here, आदि के लिए

+0

एफवाईआई शेफ लाइन-बाय-लाइन का समर्थन करता है http://rubydoc.info/gems/chef/Chef/Util/FileEdit – KCD

उत्तर

5

एक ज्ञात राज्य के लिए अपने सिस्टम की स्थापना के संदर्भ में, पूरे फ़ाइलों की तैनाती क्योंकि आप वाकई रूप में जब आप समाप्त कर इरादा फ़ाइल वास्तव में कर रहे हैं संपादन की तुलना में बेहतर है।

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

इसके अलावा, यह केवल सामान्य रूप से कठिन है और फ़ाइल को मजबूत रूप से संपादित करने के लिए अधिक जटिल है, केवल एक उत्पन्न करना है। आप कुछ ऐसा लिख ​​सकते हैं जो मूलभूत मामले में बेवकूफ है, लेकिन अगर फ़ाइल में सिंटैक्स त्रुटि या कुछ अमान्य है, तो आपके संपादन से अब काम नहीं करता है।

हमेशा के रूप में, कभी-कभी आपके पास कोई विकल्प नहीं होता है, और संपादन ही एकमात्र तरीका है।

13

असल में देवओप्स समुदाय का एक बड़ा हिस्सा है जो कॉन्फ़िगरेशन फ़ाइलों के लिए सिस्टम/पैकेज डिफ़ॉल्ट को स्वीकार करता है और केवल augeas के माध्यम से आपको पसंदीदा विधि के रूप में संशोधित करने के लिए संशोधित करता है, गिथब देवताओं उनमें से एक होगा (यदि आप पकड़ने के लिए होते हैं उन्हें Puppet Conf 2012 में)।

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

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

 संबंधित मुद्दे

  • कोई संबंधित समस्या नहीं^_^