Ansible सेटअप में प्रोविजनिंग और कॉन्फ़िगरेशन का परीक्षण कैसे करें?


33

हमारे Ansible सेटअप में कुछ लचीलापन बनाने की कोशिश को देखते हुए जो प्रावधान और विन्यास से संबंधित है।

मैं चीजों के विन्यास पक्ष पर परीक्षण के कुछ तरीकों को समझता हूं लेकिन मैं सोच रहा हूं कि चीजों के प्रावधान पक्ष पर परीक्षण को कैसे लागू किया जाए, और यदि कोई उपकरण हैं जो इस प्रकार के कार्यान्वयन में मदद कर सकते हैं।

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

यदि आपके पास प्रक्रिया को पूरी तरह से बेहतर करने के लिए कुछ है। (हमारे पास कुछ बदसूरत स्क्रिप्ट हैं जो प्रतिदिन सुस्त में रिपोर्ट करती हैं)।

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



क्या एक बार प्रावधान करने पर ही Ansible चलता है? यदि नहीं, तो किस आवृत्ति पर चलाया जा रहा है? बस समाधान की पेशकश करने से पहले समस्या को समझने की कोशिश कर रहा है।
वुडलैंड हंटर

हाय @ उत्तर किसी भी उत्तर ने आपके प्रश्न को हल कर दिया है कृपया चेक-मार्क पर क्लिक करके इसे स्वीकार करने पर विचार करें। यह व्यापक समुदाय को इंगित करता है कि आपने एक समाधान ढूंढ लिया है और उत्तरदाता और अपने आप को कुछ प्रतिष्ठा देता है। ऐसा करने की कोई बाध्यता नहीं है।
रिचर्ड स्लेटर

I'm aware Ansible isn't the best tool for working with configuration drift कृपया समझाएँ।
030

जवाबों:


19

कुछ विकल्प वहाँ ..

परीक्षण उपकरण: गिथब सितारों द्वारा क्रमबद्ध

  • Serverspec - रूबी, रूबी के rspec पर निर्मित सबसे लोकप्रिय उपकरण है
  • गॉस - YAML, सरल, <10MB सेल्फ बाइनरी, बेहद तेज, सिस्टम स्टेट से टेस्ट जनरेट कर सकता है
  • इंस्पेक - रूबी, इसे एक बेहतर सर्वरप के रूप में सोचें, लगभग एक ही वाक्यविन्यास, शेफ लोगों द्वारा बनाया गया। सर्वरपीस की तुलना में विस्तार करना आसान हो गया है
  • Testinfra - पायथन में, Ansible की इन्वेंट्री / var का उपयोग करने में सक्षम होने की शांत विशेषता है

उनके बीच प्रमुख अंतर:

अंत में, मैं अपने लिए निर्णय लेने से पहले उन सभी के साथ प्रयोग करने के लिए एक दिन बिताने का सुझाव दूंगा।

  • गॉस के अपवाद के साथ, सभी चौखटे एक दूरस्थ मशीन के खिलाफ चल सकते हैं (उदाहरण के लिए ssh)। Goss केवल स्थानीय रूप से या docker w / dgoss में चलता है।
  • सभी चौखटे एक सर्वर पर स्थानीय रूप से चलाए जा सकते हैं, लेकिन पायथन या रूबी को स्थापित या एम्बेड करने की आवश्यकता होती है। इंस्पेक माणिक के एक एम्बेडेड संस्करण के साथ एक आत्म निहित <150MB बंडल प्रदान करता है। गॉस एक एकल <10 एमबी बाइनरी है जिसमें कोई बाहरी निर्भरता नहीं है।
  • गॉस ने नगियोस / सेंसु आउटपुट के समर्थन में बनाया है, यह निगरानी उपकरणों के साथ आसान एकीकरण की अनुमति देता है।
  • गॉस टेस्ट सरल होते हैं, लेकिन कम लचीले होते हैं क्योंकि यह YAML पर आधारित होता है। अन्य चौखटे आपको परीक्षण लिखने या उपकरण की कार्यक्षमता का विस्तार करने के लिए अंतर्निहित भाषा पायथन / रूबी की पूरी शक्ति का लाभ उठाने की अनुमति देते हैं। (सादगी बनाम लचीलापन)
  • गॉस आपको वर्तमान सिस्टम स्थिति से परीक्षण उत्पन्न करने की अनुमति देता है
  • मेरी जानकारी के लिए टेस्टिनफ्रा केवल एक ही है जो कि अंतर्निहित सूची और चर के लिए अंतर्निहित समर्थन है
  • इंस्पेक बावर्ची द्वारा समर्थित है

निरंतर / विचलन परीक्षण:

  • बावर्ची अनुपालन - अपने सर्वर, सशुल्क उत्पाद का लगातार परीक्षण करने के लिए इंस्पेक के साथ काम करता है
  • Goss - आसानी से Nagios या Sensu में झुका जा सकता है। इसके अलावा, एक HTTP समापन बिंदु के रूप में सर्वर परीक्षण को उजागर करने का समर्थन करता है।

विकास के लिए परीक्षण हार्नेस:

  • किचन - टेस्टिंग हार्नेस टूल, इंस्टेंस लॉन्च करता है, कॉन्फिग मैनेजमेंट कोड चलाता है, टेस्ट सूट चलाता है। शेफ लोगों द्वारा बनाया गया
  • अणु - परीक्षण रसोई के समान है, लेकिन विशेष रूप से ansible के लिए लिखा गया है

पूर्ण प्रकटीकरण: मैं गॉस का लेखक हूं

अद्यतन: InSpec 4.x या इसके बाद के संस्करण एक मिश्रित वाणिज्यिक / खुले स्रोत लाइसेंस का उपयोग करता है - टिप्पणियां देखें।


4
मैं समझता हूं कि आप थोड़ा पक्षपाती हैं, लेकिन समय-समय पर चलने के लिए निरीक्षण को अनुपालन की आवश्यकता नहीं है। और प्रबंधन करने के लिए कोई निर्भरता नहीं है, सभी आवश्यक काम और ढांचे (रूबी) को पैकेज में बंडल किया गया है जो प्रत्येक नोड पर स्थानीय रूप से स्थापित किया जा सकता है, जब ssh / winrm के माध्यम से चल रहा है, तो खुद को जगह में रखना चाहिए। आप विशेष रूप से बाहरी कमांड के बारे में बताते हैं जो सच नहीं है, बहुत सारे परीक्षण आंतरिक रूबी कोड द्वारा किए जाते हैं। (मुझे लगता है कि यह ध्यान देने योग्य है)
तेंसिबाई

मैंने निरीक्षण के लिए बाहरी कमांड और बंडल रूबी को सही करने के लिए उत्तर अपडेट किया है। क्या आप मुझे स्पष्ट करने के लिए एक लिंक भेज सकते हैं या यह बता सकते हैं कि बहाव पर पता लगाने / रिपोर्ट करने के लिए स्वयं का निरीक्षण कैसे किया जा सकता है?
अहमद एल्साबहाइ

खैर, रिपोर्टिंग हिस्सा आपके हाथ में होगा, यह वास्तव में एक प्रतिनिधित्व करने के लिए अनुपालन लक्ष्य है। लेकिन आप एक क्रेस्टैब में निरीक्षण कर सकते हैं और सिर्फ कॉस्ट्रैब मेल पर भरोसा कर सकते हैं जब कोई परीक्षा आपको (उदाहरण के लिए) अलर्ट करने में विफल हो।
Tensibai

सब के सब, संपादित करने के लिए tahnks, कि अपने उपकरण और दूसरों के एक निष्पक्ष प्रदर्शनी लगता है। मुझे डर है कि यह जल्दी पुराना हो सकता है, लेकिन लिस्टिंग और संकेत के लिए वैसे भी +1।
तेंसिबाई

आह, हाँ .. सभी उपकरण इस तरह से लाभ उठाया जा सकता है। मैं उपकरण (या उपकरणों के साथ एकीकरण) प्रदान करने की कोशिश कर रहा था जो बेहतर रिपोर्टिंग प्रदान करते हैं। मेरे ज्ञान के लिए, साधनों का अनुपालन या उन्हें इस तरह से लपेटना है जो उन्हें nagios / sensu / some-other-monitor-tool के अनुकूल बनाता है। Ex: स्लाइडशेयर.नेट / एम_रीचर्डसन /… क्षमा याचना यदि यह शुरू में पक्षपाती के रूप में बंद हुई, तो इसका उद्देश्य नहीं था।
अहमद एल्साबहाइ

13

इसके लिए मैंने जो दो टूल देखे हैं वे हैं InSpec और ServerSpec । Serverspec एक रूबी-आधारित टूल है जो RSpec पर बनाता है । InSpec RSpec और ServerSpec से प्रेरित है।

मैंने ServerSpec का उपयोग किया है। यह शांत है, लेकिन शायद 100% स्थिर नहीं है। मुझे उबंटू पर सॉफ्टवेयर के विशिष्ट संस्करणों के लिए परीक्षण के साथ समस्याएं हैं।

मैंने InSpec डॉक्स पढ़ा है, लेकिन गहरे में नहीं खोदा है। यह अनिवार्य रूप से Serverspec के समान काम करता है।

Github द्वारा निर्णय लेने पर, ऐसा लगता है कि ServerSpec पर काम कुछ हद तक बंद हो गया है, जबकि InSpec सिर्फ रैंप हो रहा है।

अद्यतन: InSpec 4.x या इसके बाद के संस्करण एक मिश्रित वाणिज्यिक / खुले स्रोत लाइसेंस का उपयोग करता है - टिप्पणियां देखें।


1
"मुझे उबंटू पर सॉफ्टवेयर के विशिष्ट संस्करणों के लिए परीक्षण के साथ समस्याएं हैं।" मैंने SO पर इसके बारे में एक प्रश्न नोट करने के बाद इसे ठीक किया: stackoverflow.com/questions/42417864/…
मैट शूचर्ड

थोड़ा स्पष्ट करने के लिए, InSpec RSpec का अनुकरण करता है लेकिन इस पर निर्माण नहीं करता है।
कोडरंग

1
@MattSchuchard उस संदर्भ के लिए धन्यवाद!
डेव स्वर्सकी

एक परीक्षण उपकरण के लिए अच्छी तरह से "100% स्थिर नहीं" किसी भी अच्छे ध्वनि नहीं करता है
'

InSpec एक परीक्षण उपकरण के रूप में बहुत अच्छा है, और सर्वर पर कुछ भी स्थापित करना आसान बनाता है, जबकि ServerSpec केवल कुछ अतिरिक्त काम के साथ ऐसा कर सकता है। कुछ काम करने की आवश्यकता होगी, हालांकि InSpec का उपयोग एक इन्वेंट्री इन्वेंट्री के लिए किया जाता है - शायद आसान है अगर इन्वेंट्री YAML प्रारूप में है (Ansible 2.4+)।
रिचवेल

10

कॉन्फ़िगरेशन प्रबंधन उपकरण, जैसे कि Ansible का उपयोग करते समय, उपकरण स्वयं कॉन्फ़िगरेशन बहाव को रोकने के लिए जिम्मेदार होगा। एक बार जब आप एक निश्चित कॉन्फ़िगरेशन सेट करने के लिए Ansible का उपयोग करते हैं, तो Ansible का दोहराव निष्पादन आपके कॉन्फ़िगरेशन को सुनिश्चित करेगा कि आपने इसे परिभाषित किया है। इसके लिए आपके Ansible कोड को एक तरह से लिखा जाना आवश्यक है, जो कि एक प्रकार से कोमल हो।

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

ऐसे मामले में जहां आप अपने कोड को बेमतलब के रूप में लिखे जाने पर भरोसा नहीं कर सकते हैं, और इस प्रकार आप एक स्वचालित सर्वर से एक लूप में मौजूद अनपेक्षित दोहराव को वास्तव में निष्पादित नहीं कर सकते हैं। आप ऊपर के रूप में ही कर सकते हैं (एक लूप में Ansible चलाएं) लेकिन इसके ड्राई रन मोड का उपयोग करें । जब भी परिवर्तन की आवश्यकता होती है, तो हर बार जेन्किंस जॉब (या क्रोन जॉब) आपको सूचित कर सकता है कि आपके प्रावधानित विन्यास को बदल दिया गया है और सर्वर अपनी इच्छित स्थिति में नहीं हैं ।

यह सुनिश्चित करने के लिए कि आपका Ansible कोड वास्तव में वही कर रहा है जो आपको लगता है कि उसे करना चाहिए, डेव स्वर्सकी द्वारा बताए गए समाधान लागू होते हैं। InSpec और Serverspec दोनों ऐसे उपकरण हैं जो एक अलग तरीके से सत्यापित करते हैं कि आपकी playbooks वास्तव में आपका क्या मतलब है। परीक्षण वातावरण (यहां तक ​​कि डॉकटर कंटेनर) में इन प्रकार के उपकरणों को निष्पादित करने का एक शानदार तरीका रसोई का उपयोग करना है। जो कि विभिन्न इन्फ्रा यूनिट परीक्षण उपकरण, और आपकी प्लेबुक / मॉड्यूल / कुकबुक के निष्पादन के बीच सभी गोंद को संभालता है।

किचन.आईसी का इस्तेमाल मूल रूप से शेफ कुकबुक को टेस्ट करने के लिए किया गया था, लेकिन प्लगइन्स में अन्सिबल और अन्य सीएम टूल्स भी मौजूद हैं।


5

टेस्ट किचन में अंसिबल कोड के परीक्षण के लिए एक किचन-एसिबल प्रोविजनर प्लगइन है। यह शेफ एकीकरण जितना गहरा नहीं है, लेकिन यह ज्यादातर मामलों के लिए काम करता है। वहाँ भी हाल ही में अणु परियोजना है जो एक समर्पित Ansible परीक्षण प्रणाली है।


0

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


1
DevOps.se एलेक्सी में आपका स्वागत है। जबकि आपका उपकरण इस मामले में उपयोगकर्ता की मदद कर सकता है, इसके लिए यहां एक उत्तर होना चाहिए और यह बताने के लिए थोड़ा और होना चाहिए कि यह प्रश्न के लिए कैसे प्रासंगिक है। अन्यथा यह केवल लिंक वाले विज्ञापन की तरह दिखता है।
लड़कियों को

नमस्ते! यकीन है, बस अधिक जानकारी दी।
एलेक्सी मेलेहिक

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

"यह एक हज़ार सर्वरों के ऑडिटिंग को कैसे हल कर सकता है" - मैं प्रश्न में हजारों सर्वरों के बारे में कुछ भी पा सकता हूं
एलेक्सी मेलेहिक

"कुछ बहाव देने योग्य आउटपुट देकर एक ऑडिटर के लिए एक बहाव या एक मानवीय पठनीय रिपोर्ट पेश की जा सकती है।" न ही मुझे यह प्रश्न में मिला। बहती की स्पष्ट चेतावनी तथ्य यह है कि परीक्षण विफल करने के लिए शुरू होता है ...
एलेक्सी मेलेहिक
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.