क्या कठपुतली या बावर्ची एक बहु किरायेदार वातावरण में बहुत बुनियादी सर्वर विन्यास के प्रबंधन के लिए उपयुक्त है?


9

यह एक छोटे होस्टिंग कंपनी जैसे बहु-किरायेदार वातावरण से संबंधित है।

क्या कठपुतली (या समान) बुनियादी लेकिन महत्वपूर्ण जन परिवर्तनों की देखभाल के लिए एक उपयुक्त तकनीक है? उदाहरण के लिए:

  • DNS रिसोल्वर अपडेट करना (resolv.conf)
  • SSH कुंजी सेट करना
  • एनटीपी विन्यास को अद्यतन करना
  • Snmpd को कॉन्फ़िगर करना
  • एसएनएमपी पर्ल एक्सटेंशन या नागियोस स्क्रिप्ट जैसे निगरानी लिपियों की तैनाती

मेरी चिंताएं सुरक्षा और आक्रमण के आसपास हैं:

  1. मैं नहीं चाहता कि कोई भी सर्वर किसी भी विन्यास को देख सके जो उसे नहीं करना चाहिए
  2. मुझे चिंता है कि एक कठपुतली मास्टर एक समझौता सर्वर द्वारा हमला करने के लिए असुरक्षित हो सकता है
  3. मैं नहीं चाहता कि कठपुतली कोई भी बदलाव करे, जो उसे नहीं करना चाहिए, या सर्वर पर किए गए किसी भी मैनुअल बदलाव को वापस नहीं लेना चाहिए।

मुझे यह कहकर चेतावनी देनी चाहिए कि मैंने कभी भी उत्पादन में कठपुतली का उपयोग नहीं किया है, केवल एक परीक्षण प्रयोगशाला के आसपास एक त्वरित खेल था, इसलिए यह संभव है कि मैं इस गलत तरीके के बारे में सोच रहा हूं!

जवाबों:


6

प्रयत्नशील (ansible.cc) का प्रयास करें। हो सकता है यह आपके लिए हो। आपके क्लाइंट पर कोई एजेंट नहीं चल रहा है। यह बहुत तेजी से बढ़ रहा है।

एक और बहुत अच्छा विकल्प साल्ट स्टैक है।

अन्सिबल और सॉल्ट को समझना आसान है, आप चाहें तो डिस्ट्रीब्यूटेड शेल की तरह कमांड लाइन टूल के रूप में इनका उपयोग कर सकते हैं।


1
मुझे पता है कि मैंने यह बहुत पहले पूछा था। आपको यह जानकर खुशी होगी कि यह उत्तर था। अब हम प्रति दिन 10s सर्वरों को स्वचालित रूप से रोल आउट करने के लिए Ansible का उपयोग करते हैं और एक फायर-एंड-भूल शैली का अधिकतम प्रबंधन कर रहे हैं। अब एक साल से अधिक समय हो गया है।
साइमनजग्रीन

9

हां, यह निश्चित रूप से संभव है। यह तय करना कि आपको ऐसा करना चाहिए या नहीं, हालांकि आप पर निर्भर है।

आपके प्रश्नों के बारे में:

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

2) यह नहीं होना चाहिए, यह मानते हुए कि आप इसे पैच रखते हैं। ठीक से कॉन्फ़िगर किया गया है, कठपुतली के ग्राहकों के लिए हमला करने के लिए केवल एक छोटा वेक्टर है। उस ने कहा, अगर इससे समझौता हुआ तो प्रभाव बड़े हैं, इसलिए इसे बंद करने का ध्यान रखें।

3) यह वास्तव में एक परीक्षण और तैनाती मुद्दा है। यदि आपके पास ठोस कठपुतली कोड है, तो यह आपकी फ़ाइलों को खराब नहीं करेगा। उस हल को प्राप्त करने में थोड़ा समय लगता है, लेकिन मूल बातों के लिए (जैसे आपको ज़रूरत है) लंबे समय तक नहीं।


4

क्या कठपुतली (या समान) बुनियादी लेकिन महत्वपूर्ण जन परिवर्तनों की देखभाल के लिए एक उपयुक्त तकनीक है?

हां, इसे इस तरह से इस्तेमाल किया जा सकता है। मैं इसका उपयोग बाहरी क्लाइंट सिस्टम का समर्थन करने के लिए करता हूं।

मैं नहीं चाहता कि कोई भी सर्वर किसी भी विन्यास को देख सके जो उसे नहीं करना चाहिए

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

यदि आप वास्तव में पागल हैं तो आप शेयर बनाने के लिए कठपुतलियों की फाइलरसेट सेटिंग्स को समायोजित कर सकते हैं जो केवल कुछ सिस्टम ही एक्सेस कर सकते हैं। फाइलरवर एक्सेस प्रमाणपत्रों पर आधारित है।

मैं नहीं चाहता कि कठपुतली कोई भी बदलाव करे, जो उसे नहीं करना चाहिए, या सर्वर पर किए गए किसी भी मैनुअल बदलाव को वापस नहीं लेना चाहिए।

स्थानीय परिवर्तनों की अनुमति देने के लिए कुछ अलग दृष्टिकोण हैं।

एक विधि जिसका मैं अक्सर उपयोग करता हूं वह नीचे है। मूल रूप से यदि आप किसी सूची को पास करते हैं source, तो कठपुतली सूची में प्रत्येक आइटम का प्रयास करती है। इसलिए मैं सूची में पहला आइटम स्थानीय फ़ाइल पर इंगित करने के लिए जोड़ता हूं।

  file { '/etc/ssh/sshd_config':
    ensure => present,
    source => ["/etc/ssh/sshd_config_local",
               "puppet:///modules/ssh/$ssh_config_file"],
    ...
  }

एक अन्य विकल्प सिम्बलिंक का उपयोग करना होगा। अगर कोई कठपुतली संस्करण का उपयोग करना चाहता है, तो वे एक फ़ाइल के कठपुतली संस्करण के लिए सहानुभूति रखते हैं। अगर वे स्थानीय रूप से अपने कॉन्फिगर को बनाए रखना चाहते हैं, तो वे सिम्बल नहीं बनाते हैं।

  file { '/etc/ssh/sshd_config_puppet':
    ensure => present,
    source => "puppet:///modules/ssh/$ssh_config_file",
    ...
  }

दूसरी संभावना यह है कि पूरी फ़ाइलों को बदलने के बजाय लाइन-स्तर के परिवर्तन करने के लिए ईगिस का उपयोग करें। आप जो बदलते हैं उसके बारे में बहुत रूढ़िवादी रहें।


1

3> कठपुतली में या ऐसे किसी भी उपकरण में कोई स्वचालित पूर्ववत नहीं है। आपको पूर्ववत करने के लिए स्पष्ट कोड लिखना होगा। इसके अतिरिक्त, आप कठपुतली के वातावरण की सुविधा पर शोध कर सकते हैं, एक परीक्षण प्रयोगशाला है जहां नए कोड का परीक्षण किया जा सकता है (वीएम हो सकता है), और कोड समीक्षा का उपयोग करें।


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

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

विचार यह है कि कॉन्फ़िगर प्रबंधन रन वन-वे है। कोई समर्थित रोलबैक प्रक्रिया नहीं है, या पूरी तरह से "ड्राई रन" का काम कर रहा है (शेफ में एक व्हाटुन मोड है जो केवल पूर्ण सिमुलेशन के बजाय केवल एक सुझाव / पवित्रता की जाँच है (देखें blog.afistfulofservers.net/post/2012/12/21/) ... एक लंबी व्याख्या के लिए)। आप उपयोगकर्ता पासवर्ड आदि को अन-चेंज नहीं कर सकते हैं। यही कारण है कि मैंने "पूरी तरह से सच नहीं" लिखा है - कोई समर्थित रोलबैक नहीं है, लेकिन एक सुरक्षा / डिबगिंग नेट है जो आपको बैकअप देखने देता है यदि कुछ गलत हो जाता है और आपको एक नज़र लेने की ज़रूरत है। अधिक कुछ नहीं, लेकिन फिर भी उपयोगी है।
मैकीज पास्टर्नैकी

और यह पता चला है कि मैंने आपकी टिप्पणी को गलत बताया है - यह सच है कि कोई स्वचालित पूर्ववत नहीं है और यदि आपने इसे स्वचालित करने का प्रयास किया है, तो आपको स्पष्ट (और सबसे अधिक संभावित दोषपूर्ण) कोड लिखने की आवश्यकता है। मैं अपनी मूल टिप्पणी को संपादित नहीं कर सकता क्योंकि इसका उत्तर दिया गया है - मैं स्वचालित रोलबैक के बजाय आपदा वसूली के बारे में सोच रहा था। यदि आप स्वचालित रोलबैक देखना चाहते हैं, तो nixos.org , BTW पर एक नज़र डालें ।
मैकीज पास्टर्नैकी

1

मैं नहीं चाहता कि कठपुतली कोई भी बदलाव करे, जो उसे नहीं करना चाहिए, या सर्वर पर किए गए किसी भी मैनुअल बदलाव को वापस नहीं लेना चाहिए।

पपेट फाइल प्रकार का उपयोग करके बनाई गई कॉन्फिग फाइलों के लिए इसे सेटिंग द्वारा प्राप्त किया जा सकता है:

replace => false,

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

हालाँकि, यह कठपुतली के दर्शन के खिलाफ जाने के लिए एक निष्प्राण तैनाती स्क्रिप्ट है।

यदि आप कर सकते हैं, तो बेहतर हो सकता है कि अलग-अलग व्यवस्थापक-संपादन योग्य फ़ाइलें हों, जो कठपुतली द्वारा प्रबंधित न हों, जो कठपुतली द्वारा प्रबंधित फ़ाइलों से शामिल हैं।


0

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

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

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

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