छोटे स्तर पर स्वचालित लिनक्स परिनियोजन और विन्यास प्रबंधन - क्या यह इसके लायक है?


24

मैं डेबियन चलाने वाले ~ 25 सर्वरों को तैनात करने वाला हूं । मशीनों में अलग-अलग भूमिकाएँ होंगी - वेब सर्वर, जावा एप्लीकेटर, प्रॉक्सी, MySQL बॉक्स। भविष्य में शायद वातावरण ज्यादा विकसित नहीं होगा - शायद अगले 2 वर्षों में 2-5 और सर्वर।

मैं शायद इस्तेमाल करेंगे fai प्रणाली की स्थापना के लिए, लेकिन अगर यह की कीमत भी जोड़ने के लिए मैं अनिश्चित हूँ cfengine या कठपुतली केंद्रीकृत इस तरह के छोटे पैमाने के लिए विन्यास प्रबंधन।

क्या विन्यास प्रबंधन इस आकार के वातावरण के लिए समझ में आता है?

जवाबों:


29

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

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

कॉन्फ़िगरेशन प्रबंधन उपकरण विशेष रूप से उपयोगी होता है जहाँ आपके पास कई सर्वर समान भूमिका निभाते हैं और आप चाहते हैं कि वे समान हों, जैसे वेबसर्वर क्लस्टर। हालांकि, वे सभी सर्वरों के आधार इंस्टॉल को कॉन्फ़िगर करने के लिए भी उपयोगी हो सकते हैं। आप अपने सभी सर्वरों पर ntpd और MTA जैसे विशेष पैकेज स्थापित करना चाहते हैं। आप अपने सभी सर्वरों पर एक कॉन्फ़िग फ़ाइल बदलना चाहते हैं। एक अतिरिक्त लाभ यह है कि आप अपने मेनिफेस्टों को तोड़फोड़ जैसी किसी चीज में रख सकते हैं और यह रिकॉर्ड रख सकते हैं कि सर्वर पर क्या बदला और किसने और क्यों किया। सर्वर विफलता के मामले में कॉन्फ़िगरेशन प्रबंधन भी एक जीवन रक्षक हो सकता है और आपको इसे जल्दी से पुनर्निर्माण करने की आवश्यकता है। OS स्थापित करें (FAI या preseeding का उपयोग करके), कठपुतली स्थापित करें और दूर चला जाता है, बिलकुल पहले जैसा बनाया गया था। जाहिर है आपको डेटा का बैकअप रखने की आवश्यकता होगी।

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

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


प्री-सीडिंग के बारे में संकेत के लिए धन्यवाद। मैं अभी इसके बारे में डॉक्स पर एक नज़र डाल रहा हूं।
pQd

एफएआई पुरानी खोपड़ी है; मैं निश्चित रूप से इसकी सिफारिश नहीं करूंगा। Preseeding + कठपुतली ftw।
Womble

हम FAI और cfengine का उपयोग करते हैं, हमारे पास लगभग 1000 मशीनें हैं और यह बहुत अच्छी तरह से काम करती है। यह ध्यान देने योग्य है कि आप मशीन में ssh कर सकते हैं क्योंकि यह स्वयं बनाता है, ताकि सूक्ष्म लिपियों को लिखना आसान हो सके।
जेम्स

एफएआई पुराना मल? नहीं! एफएआई चट्टान ठोस है और 10 से अधिक वर्षों का अनुभव है। FAI उपयोगकर्ताओं की लंबी सूची पर एक नज़र fai-project.org/reports
Thomas Lange

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

10

मैं किसी भी वातावरण के लिए CFengine की सिफारिश करूंगा जो 2-3 से अधिक बक्से में हो और जहां आपके पास 'टेम्पलेट' की कुछ अवधारणा हो या विशिष्ट भूमिका निभाने वाले सर्वर हों।

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

यहां तक ​​कि एक कुशल सिस्टम प्रशासक के साथ बारह घंटे की शिफ्ट के अंत में एक वेब सर्वर को रोल आउट करने के दौरान, जब चीजें पहले से ही गलत थीं .... क्या उन्हें उस छोटी सी कॉन्फ़िगरेशन फ़ाइल को याद रखने की संभावना है, जिसे / etc / random / location में जाने की आवश्यकता है / foo / बार अन्यथा आवेदन बिल ग्राहकों की तरह चुपचाप कुछ महत्वपूर्ण करने में विफल रहेगा? :)

CFengine जैसे उपकरण पर्यावरण-व्यापक सुरक्षा अद्यतन करने का एक शानदार तरीका है। सभी बक्सों पर एक नगियोस विन्यास (एनआरपीई) को छोड़ना भी एक बाधा है। आप पांच बक्से या पांच साथ काम कर रहे हैं सौ आप बक्से होगा CFengine साथ समय की बचत।

यह शायद ध्यान देने योग्य है कि मेरा वातावरण थोड़ा बड़ा है, हालांकि मैंने आपके द्वारा नोट किए गए नोटों की तुलना में छोटे वातावरणों के लिए CFengine को भी तैनात किया है!

संभवतः आपका अगला प्रश्न CFengine vs Puppet होगा? यह एक अधिक कठिन निर्णय है, और मैं हमेशा (शुरुआती दिनों में) पुंगपेट से सीफेंगिन चला गया हूं, विशेष रूप से त्रुटि लॉगिंग के आसपास कुछ अपरिपक्वता .... इन दिनों मैं वास्तव में निश्चित नहीं हूं - एक नाटक है 'एन देखें? कठपुतली के साथ अपने विशिष्ट मुद्दों को देखते हुए, वे एसएसएल सर्टिफिकेट से संबंधित थे, दर्द से अभी भी उस समय को याद करते हैं, जब मैंने सर्वर का निदान करने में 3 घंटे बिताए थे <-> ग्राहक संपर्क मुद्दों irc.freenode.net/#puppet में कुछ भारी RTFM और RTFS के साथ केवल खोजने के लिए एक त्रुटि, लॉग नहीं किया जा रहा है, और ल्यूक ने कहा, "आह यह तय करना वास्तव में मुश्किल है" और कभी नहीं किया। :(


अच्छी बात। समस्या यह है कि मेरे मामले में चीजें अत्यधिक विशिष्ट होने जा रही हैं, टेम्प्लेट की संख्या [अतिरेक के कारण] संभवत: n / 2 के आसपास होगी [जहां n कुल सर्वरों की संख्या है]।
pQd

1
यह कोई बुरी बात नहीं है, मेरे ज्यादातर WWW क्लस्टर n + 2 हैं अगर n / 2 नहीं हैं और आप HAproxy जैसे अपने लोड बैलेंसर्स के पीछे नोड्स तैनात करने में CFengine के साथ काफी लचीले हो सकते हैं। यह IPVS और रखवाली के सामान को भी प्रबंधित करने के लिए पूरी तरह से व्यवहार्य है। यहां तक ​​कि n / 2 अतिरेक की आवश्यकताओं के साथ भी मैं दांव लगाना चाहूंगा कि आपके वातावरण में समान या समान कॉन्फ़िगरेशन फ़ाइलों की एक बहुत कुछ है? याद रखें कि CFengine के साथ आपके पास एक "templated" कॉन्फ़िग फ़ाइल जैसे IP और फिर (रनटाइम पर) जैसी चीज़ों को करने के लिए 'editfiles' टूल है और एक सही जानकारी के साथ एक खोज और बदलें। ;)
nixgeek

@astinus आपकी टिप्पणियों के लिए धन्यवाद। मैं केंद्रीय विन्यास में स्क्रू-अप करके अपने उत्पादन को कम करने से थोड़ा डरता हूं। आप क्या सोच रहे हैं कि प्रत्येक मशीन पर कॉन्फ़िगर और लॉगिंग के स्वचालित मतदान को अक्षम करने और इसे अपडेट करने के लिए मजबूर करने और मैन्युअल रूप से जांचने के लिए कि क्या सभी चीजें ठीक हैं? [हाँ, मेरे पास जगह के साथ-साथ नगिओस / कस्टम मॉनिटरिंग भी होगी ... लेकिन फिर भी]।
pQd

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

मैं हास्यास्पद तरीके से सिस्टम (री) इंस्टॉलेशन, कॉन्फ़िगरेशन प्रबंधन के लिए SLACK का उपयोग करने की भी सिफारिश करूंगा। यह यहां उपलब्ध है: sundell.net/~alan/projects/slack
HK_

5

Cfengine और कठपुतली के अलावा, वहाँ भी महाराज है । मैं दृढ़ता से इन उपकरणों में से एक का उपयोग करने का सुझाव दूंगा क्योंकि चीजें हमेशा अप्रत्याशित दिशाओं में बढ़ेंगी। यह एक केंद्रीकृत स्थान में चीजों को प्रबंधित करने में मदद करता है।

पहचानने के लिए महत्वपूर्ण बात यह है कि संभावना है कि आपको सब कुछ नहीं मिलेगा, लेकिन अगर आप कम से कम 90% वहां पहुंच सकते हैं, तो यह एक शुरुआत है। इसके अलावा, यह मजेदार है और लंबे समय में आपके जीवन को आसान बना देगा। अंत में, आगे बढ़ना एक अच्छा कौशल है।


शेफ कॉन्फ़िगरेशन प्रबंधन दृश्य में एक हालिया प्रविष्टि है। यह कठपुतली की प्रथा की घोषणात्मक भाषा के विपरीत, रूबी को लिखने के लिए कॉन्फ़िगर किया गया है। समय बताएगा कि कौन सी विधि अच्छी तरह से काम करती है। मैं वर्तमान में कठपुतली शिविर में बैठता हूं।
डेविड पशले

3

मैं 5 साल से cigerine का उपयोग कर रहा हूं ताकि डेबियन स्थापित किया जा सके (आजकल लकडी से)। ईच के साथ मैं एक कस्टम डेबियन-इंस्टॉलर का निर्माण करता हूं। Preseed के लिए धन्यवाद एक एकल प्रश्न आता है: "होस्टनाम क्या है"। इसके बाद cigerine पूरे सर्वर (dns + dhcp को dnssec, samba, ntpd, default (Samba) यूजर्स और पासवर्ड, ssh, openvpn, apache vHosts, LVM पर rsnapshot पर बैकअप, कस्टम वेबमिनमॉड्यूल्स आदि के साथ कॉन्फ़िगर करता है)।

यहां तक ​​कि जब मैं सिर्फ एक सर्वर स्थापित करता हूं तो मैं अपने टूलबॉक्स से इस तरह से cigerine- स्क्रिप्ट का उपयोग करता हूं:

control:

  Repository  = ( $(CFREPO) )
  IfElapsed = ( 0 )
  Syslog = ( on )
  actionsequence = ( editfiles shellcommands )
  CPTYPE = ( sum )

editfiles:
  { /etc/sysctl.conf
    # don't spam on tty:
    BeginGroupIfNoSuchLine "kernel.printk.*=.*2 4 1 7"
      DeleteLinesMatching "^kernel.printk.*=.*"
      Append "kernel/printk=2 4 1 7"
    EndGroup
    # no E(xplicit?) C(ongestion) N(otification) 
    BeginGroupIfNoSuchLine "net.ipv4.tcp_ecn.*=.*0"
      DeleteLinesMatching "^net.ipv4.tcp_ecn.*=.*"
      Append "net/ipv4/tcp_ecn=0"
    EndGroup
    BeginGroupIfNoSuchLine "net.ipv4.ip_forward.*=.*1"
      DeleteLinesMatching "^net.ipv4.ip_forward.*=.*"
      Append "net/ipv4/ip_forward=1"
    EndGroup
    DefineClasses "configchange_sysctl"
  }

shellcommands:
  configchange_sysctl::
    "/sbin/sysctl -p /etc/sysctl.conf"

# vim: set ts=2:

मुझे cigerine पसंद है, क्योंकि cf2-स्क्रिप्ट कुछ मानव पठनीय हैं।

तो इसके निश्चित रूप से इसके लायक स्वचालित विन्यास प्रबंधन के लिए उपकरणों के साथ काम करने के लिए।

/ Thorsten


2

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

दूसरों के ऊपर cigerine का लाभ यह अल्ट्रा लाइटवेट है लेकिन वास्तव में इसमें अधिक क्षमताएं हैं। कठपुतली द्वारा उपयोग किए जाने वाले वेब प्रमाणपत्रों के बजाय यह सुरक्षा ssh की तरह है। जब मैंने अपने बॉस को cengine के बारे में बताया तो उन्हें लगा कि यह विज्ञान कथा है :) यदि आप कुछ भविष्य की तलाश कर रहे हैं, तो मार्क बर्गेस के कुछ शोध पत्रों को पढ़ने का प्रयास करें। सुन्दर सामान।


1

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

सभी बॉक्स पर कोई ssh ठीक से स्थापित नहीं है? कोई कर्ल / विग / विम भी नहीं? अन्य इन-हाउस टूल के बारे में क्या आप प्रत्येक बॉक्स पर रखना चाहेंगे?

अपने सर्वर का केंद्रीय प्रबंधन करना उन पहले साधनों में से एक है, जिनके लिए आपको भविष्य के प्रयासों को आसान बनाने के लिए काम करना चाहिए।


1

मैं यहां मौजूद हर व्यक्ति से सहमत हूं। जब आप बड़े नहीं होते हैं, तो आपको सीखना और काम करना शुरू करना चाहिए। क्योंकि तब आप तैयार होते हैं जब आप बड़े होते हैं।

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

हां, आपके पास लाइव इंस्टॉलेशन में अपने परिवर्तनों को तैनात करने के लिए आपके पास परीक्षण करने के लिए कुछ मशीनें होनी चाहिए। लेकिन इस तरह की कॉन्फ़िगरेशन स्क्रिप्ट के साथ, आप लाइव इंस्टॉलेशन में कोई भी चरण करना नहीं भूलेंगे।

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