2008-10-06 7 views
12

संस्करण नियंत्रण के तहत अपनी कॉन्फ़िगरेशन फ़ाइलों (उदा। Httpd.conf, my.cnf, .bashrc ...) को रखने का सबसे अच्छा तरीका क्या है? संस्करण लाभ के लिए, मैं समाधान को बैकअप के रूप में भी काम करना चाहता हूं, ताकि मैं एक नया नया सर्वर और चेकआउट (या निर्यात) एसवीएन से सीधे कॉन्फ़िगरेशन फ़ाइलों को ला सकता हूंएसवीएन के तहत कॉन्फ़िगरेशन फ़ाइलों को रखने का सबसे अच्छा तरीका?

एक अच्छा स्पर्श होगा कॉन्फ़िगरेशन फ़ाइल के मूल पथ को भी स्टोर करने के लिए।

उत्तर

0

मैं कई मशीनों के लिए ऐसा करते हैं, पुराने सोलारिस 8 बक्से से मैक ओएस एक्स से लेकर, और मैं एक बहुत आसान लेआउट:

मेरी भंडार में मैं निम्नलिखित:

<root>/common 
    /.emacs.d 
    /.bash_common 
    /scripts # platform-independent binary tools 

<root>/linux 
    .bashrc 
    .emacs 
    ... 

<root>/solaris 
    .bashrc 
    .emacs 
    ... 

<root>/osx 
    .bashrc 
    .emacs 
    ... 

प्रत्येक ओएस homedirs के एक svn है: externals .emacs.d, .bash_common, और स्क्रिप्ट के संदर्भ में, इसलिए वे डुप्लीकेट नहीं हैं।

इसके अतिरिक्त, मेरे पास मेजबान-विशिष्ट पथ कॉन्फ़िगरेशन के साथ लिनक्स और सौरइस निर्देशिकाओं में एक .bash_hostconfig है, और क्योंकि मेरे पास घर पर काम करने से बहुत अलग सेटअप है (FC5-8 और RHEL3-5, मैं कहां हूं पर निर्भर करता हूं)।

तो, इन चीजों के बीच, मेरे पास नई मशीन पर उठने और चलाने के लिए एक बहुत ही सरल प्रक्रिया है: मैं बस एक अस्थायी निर्देशिका में/$ प्लेटफार्म की जांच करता हूं, और फिर उन फ़ाइलों के साथ $ HOME में सबकुछ ओवरराइट करता हूं। मुझे मूल पथ को स्टोर करने की आवश्यकता नहीं है, क्योंकि यह हमेशा इस तरह से $ HOME के ​​सापेक्ष है।

4

मैं अपनी कॉन्फ़िगरेशन फ़ाइलों को संशोधित करता हूं, लेकिन मैं svn के बजाय git का उपयोग करता हूं (जो आपके पास एकाधिक मशीनें होती है)। मेरे पास एक बैश स्क्रिप्ट है (जिसे install.sh कहा जाता है), रिपोजिटरी के तहत भी, जो मशीनों पर फ़ाइलों को उनके उचित स्थान पर प्रतिलिपि बनाता है या सिमलिंक करता है।

तो अगर मैं एक नई मशीन पर स्थापित करने के लिए की जरूरत है, मैं सिर्फ भंडार का एक Git क्लोन (जो एक SVN चेकआउट के बराबर है) करते हैं और मेरी install.sh उपयुक्त स्थानों में मेरी config फ़ाइलें स्थापित करने के लिए चलाते हैं। install.sh के आस-पास होने का मतलब है कि मैं कॉन्फ़िगरेशन फ़ाइलों के मूल पथ को भी संग्रहीत कर रहा हूं, जैसा कि आपने संकेत दिया था कि आप चाहें।

+2

इस विधि का उपयोग करके, क्या आप परिवर्तन करने में सक्षम हैं और अपनी कॉन्फ़िगरेशन फ़ाइलों के लिए 'गिट diff' का उपयोग कर सकते हैं? या तैनाती में सहायता करने के लिए आपका लक्ष्य अधिक है? – Tom

0

हम सीवीएस का उपयोग निर्देशिका संरचना में कॉन्फ़िगर करने के लिए करते हैं जो जितना संभव हो उतना फ्लैट हो। यह तकनीक आसानी से एसवीएन तक बढ़ा दी जाती है।

फिर हम एक Makefile को सीवीएस निर्यात का उपयोग करने की स्थापना की है:

  1. बिना सीवीएस घटकों सीवीएस निर्देशिका संरचना की एक प्रतिलिपि बनाने,
  2. में निर्देशिका संरचना लक्ष्य मशीन के लिए आवश्यक बनाने के अपने स्थानीय निर्देशिका जैसे कि आप लक्ष्य मशीन पर मूल निर्देशिका में थे, उदाहरण के लिए ./my_cvs_dir/etc/ .. और ./my_cvs_dir/usr/local/newapp/..,
  3. , लक्ष्य निर्देशिका संरचना को सीवीएस संरचना से फ़ाइलों की प्रतिलिपि
  4. लक्ष्य निर्देशिका संरचना के लिए एक टारबॉल बनाने के लिए, और
  5. लक्ष्य मशीन पर टैरबॉल तैनात करें।

हमारे पास विशेषज्ञता बढ़ाने में स्थापित इन टैरबॉल भी हैं, उदा। सोल 10, अपाचे, विशिष्ट ऐप आदि

HTH

चियर्स,

रोब

0

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

और इस पेड़ को तब भी जो भी वीसीएस पसंद है, उसकी जांच की जा सकती है।

तैनाती के लिए आप एक शेल स्क्रिप्ट या ऐसी चीज लिख सकते हैं जो आपके कॉन्फ़िगरेशन फ़ाइल पेड़ का उपयोग करने के लिए सबकुछ शुरू करता है।

2

यह मैं क्या लागू किया है है:

मुझे लगता है कि एक निर्देशिका (जैसे कि/डेटा/कॉन्फ़िगरेशन/होस्टनाम/{आदि, httpd} में सभी कॉन्फ़िगरेशन के rsync करता है एक सर्वर है

मेरे पास है। परिवर्तनों को स्थानांतरित करने के लिए हर घंटे चलने वाला एक rsync। जैसे ही rsync पूरा हो जाता है, वहां एक svnautocommit स्क्रिप्ट होती है जो परिवर्तनों की स्वत: टिप्पणी करता है। इस तरह, मैं किसी भी बदलाव या किसी भी संस्करण को वापस रोल कर सकता हूं।

आपको अपनी आवश्यकताओं के आधार पर एसवीएन निर्देशिका संरचना की योजना बनाने की आवश्यकता हो सकती है।

0

वैसे भी आप एक केंद्रीय स्टोर चाहते हैं, तो आप कुछ और जटिल हो सकते हैं जैसे Slack। आप पुश सर्वर पर फ़ाइलों को नियंत्रित और संस्करण नियंत्रित करते हैं, फिर इसे ग्राहकों को rsync। explanation of subroles में पेड़ की संरचना के बारे में कुछ उदाहरण हैं।

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