हमने एक सर्वर स्थापित किया है जो एक छोटे संघ के लिए बुनियादी ढाँचा चला रहा है। अब तक, हमने Ansible के साथ कॉन्फ़िगरेशन को प्रबंधित करने की कोशिश की है, लेकिन यह एक बड़ी सफलता नहीं रही है। शायद हम गलत कर रहे हैं।
सिद्धांत रूप में, विचार यह है कि यह सर्वर ज्यादातर समय अकेला छोड़ दिया जाएगा, जिसमें लोग एक बार एक चंद्रमा में चीजों को जोड़ या बदल सकते हैं। इससे यह महत्वपूर्ण हो जाता है कि जो कुछ भी कॉन्फ़िगर किया गया है और सर्वर पर चल रहा है वह अच्छी तरह से प्रलेखित और स्पष्ट है, क्योंकि जो लोग अक्सर सिस्टम का संचालन नहीं करते हैं वे सिंहावलोकन खोने के लिए बाध्य हैं (अकेले विवरण को याद रखें)। इसके अतिरिक्त, समय के साथ, इस सर्वर को प्रबंधित करने वाले लोगों के समूह की संरचना बदल जाएगी (जैसे लोग 'समिति' से बाहर निकलेंगे और जुड़ेंगे)।
जब भी हम कुछ सेट करना चाहते थे, तो हम एक साफ स्थापना के साथ शुरुआत में भूमिका निभाते हुए शुरू हुए (nginx, phpfpm, पोस्टफिक्स, फ़ायरवॉल, sftp, munin, ..)। शायद हमारी अनुभवहीनता के कारण, हम निश्चित रूप से कभी भी उस तरह से काम करने वाले कार्यों का एक सेट टाइप करने में सक्षम नहीं होते हैं, जिस तरह से हमें एक बार में इसकी आवश्यकता होती है, क्योंकि कॉन्फ़िगरेशन थोड़ा परीक्षण और त्रुटि प्रक्रिया है। इसका मतलब है कि व्यवहार में, हम आम तौर पर पहले जो भी सेवा हम सर्वर पर चलाना चाहते थे, कॉन्फ़िगर करते हैं , और फिर अनसुने कार्यों में अनुवाद करते हैं। जहाँ यह जा रहा है वहां आप देख सकते हैं। लोग तब कार्य का परीक्षण करना भूल जाते हैं, या चीजों को तोड़ने के जोखिम पर ऐसा करने से डरते हैं, या इससे भी बदतर: हम चीजों को जोड़ने योग्य चीजों को जोड़ने के लिए भूल जाते हैं या उपेक्षा करते हैं।
आज, हमारे पास बहुत कम विश्वास है कि वास्तविक कॉन्फ़िगरेशन वास्तव में दर्शाता है कि सर्वर पर क्या कॉन्फ़िगर किया गया है।
वर्तमान में मुझे तीन मुख्य समस्याएं दिखाई देती हैं:
- यह मुश्किल है (पढ़ें: हमारे पास एक अच्छा तरीका नहीं है) ब्रेकिंग चीजों को जोखिम में डाले बिना किसी भी कार्य का परीक्षण करें।
- यह वांछित कॉन्फ़िगरेशन को पहले निकालने के लिए अतिरिक्त कार्य जोड़ता है, और फिर यह पता लगाने के लिए कि इसे कैसे अनसुना कार्यों में अनुवाद करना है।
- (आदर्श रूप से) हम परिचित और दिनचर्या बनाने के लिए इसका अक्सर उपयोग नहीं करते हैं।
यहां एक महत्वपूर्ण विचार यह है कि हम जो कुछ भी कर रहे हैं, उसके लिए नए लोगों के लिए एक टन के अभ्यास के बिना रस्सियों को सीखना आसान होना चाहिए ।
क्या कोई व्यवहार्य विकल्प है जो अभी भी कुछ गारंटी और चेक प्रदान करता है (कुछ में Ansible फ़ाइलों को मर्ज करने के लिए तुलनीय है master
) जो "चीजों को कॉन्फ़िगर करता है और जो आपने किया था वह लिखता है" प्रदान करने में विफल रहता है?
संपादित करें: हम विचार करने के /etc
लिए प्रतिबद्ध है। क्या इस तरह से गोपनीयता (निजी कुंजी, आदि) की रक्षा करने का एक उचित तरीका है, लेकिन अभी भी सर्वर के बाहर कॉन्फ़िगरेशन रिपॉजिटरी उपलब्ध है?