नाटक, भूमिकाएं और कार्य अन्सिबल स्ट्रक्चर हैं और इस एंसिबल स्ट्रक्चर में महत्वपूर्ण विशेषता होती है जिसे अन्सिबल में टैग कहा जाता है। जब भी हम Ansible में एक प्लेबुक लॉन्च करते हैं, तो आप -टैग और -स्किप टैग कमांड को नियोजित कर सकते हैं ताकि हम केवल कार्यों, नाटकों और भूमिकाओं की एक विशेष श्रृंखला को निष्पादित कर सकें। यदि हमारे पास एक प्लेबुक है जिसमें बहुत सारे कार्य हैं, लेकिन हम प्लेबुक के सभी कार्यों को निष्पादित नहीं करना चाहते हैं, तो पूरी प्लेबुक को निष्पादित करने के बजाय, हम अन्सिबल प्लेबुक में टैग कमांड का उपयोग करके केवल कुछ कार्य चलाएंगे।
हम इस विषय में उन टैग्स पर चर्चा करने जा रहे हैं, जो Ansible के सबसे महत्वपूर्ण पहलुओं में से एक हैं। हम यह समझाने की कोशिश करेंगे कि टैग क्या हैं और टैग कैसे Ansible में काम करते हैं क्योंकि यह Ansible प्लेटफॉर्म की एक जटिल विशेषता है।
उदाहरण के लिए, एक प्लेबुक में तीन जिम्मेदारियाँ हो सकती हैं: मॉड्यूल को स्थापित करना, इसे कॉन्फ़िगर करना और तैनात मॉड्यूल की स्थिति की जाँच करना, जैसे कि सेवा चल रही है और पहुँच योग्य है। चूंकि हमें बस कुछ रिमोट मशीनों पर मॉड्यूल की स्थिति देखने की आवश्यकता होती है, इसलिए हम प्लेबुक में सभी कार्यों को निष्पादित करने के बजाय इस स्थिति में Ansible टैग का उपयोग करते हैं। यह हमें विशेष रूप से एक निश्चित ऑपरेशन चलाने में सक्षम बनाता है, जिससे हमें सभी संबंधित गतिविधियों को एक ही प्लेबुक में रखकर चलने का समय कम करने की अनुमति मिलती है।
Ansible Playbook में टैग के उपयोग की पूर्वापेक्षाएँ
व्यावहारिक उदाहरणों को अन्सिबल सॉफ्टवेयर में डालने के लिए, हमें निम्नलिखित आवश्यकताओं को पूरा करना होगा।
एक अन्सिबल कंट्रोलिंग सर्वर की आवश्यकता होनी चाहिए ताकि वह परिवर्तन कर सके। Ansible सॉफ़्टवेयर में टैग पैरामीटर का उपयोग करने के लिए, हमें उनके साथ संवाद करने के लिए स्थानीय होस्ट की आवश्यकता होती है। इस मामले में, हम लक्ष्य दूरस्थ सर्वर के रूप में निष्पादन के दौरान स्थानीय होस्ट का उपयोग कर रहे हैं। हम प्लेबुक बनाएंगे, Ansible टैग कमांड निष्पादित करेंगे, और ansible-नियंत्रक डिवाइस से रिमोट होस्ट पर परिणामों की निगरानी करेंगे।
हम कुछ अन्सिबल टैग्स की जांच करने के लिए विभिन्न परिदृश्यों को नियोजित करने का लक्ष्य रखेंगे ताकि शिक्षार्थी अन्सिबल प्लेबुक में टैग्स की अवधारणा को आसानी से समझ सकें।
उदाहरण 01: अन्सिबल प्लेबुक में एक टास्क को एक्सेस करना
हम प्लेबुक में कई कार्य प्रदान करके Ansible में लागू करने जा रहे हैं और फिर हम इसमें टैग्स का उपयोग करके केवल एक ही कार्य तक पहुंचेंगे। ऐसा करने के लिए, हम निम्नलिखित कमांड लिखकर पहले प्लेबुक बनाएंगे:
[जड़ @ मास्टर ansible] # नैनो ansible_tags.yml
ansible_tags.yml प्लेबुक बनाने और लॉन्च करने के बाद। अब हम कमांड को प्लेबुक में लिखना शुरू करेंगे। सबसे पहले, हम प्रदान किए गए मेजबानों को 'मेजबानों के पैरामीटर' में पारित करेंगे, जिसे हम 'लोकलहोस्ट' का उपयोग करेंगे। फिर, हम 'इकट्ठा_तथ्यों' पैरामीटर में 'गलत' मान लिखेंगे ताकि हम प्लेबुक निष्पादित करते समय स्थानीयहोस्ट के बारे में अतिरिक्त जानकारी प्राप्त न कर सकें।
उसके बाद, हम उन गतिविधियों को एक-एक करके 'कार्य' पैरामीटर के तहत सूचीबद्ध करना शुरू करेंगे जिन्हें हम निष्पादित करना चाहते हैं। हम यह निर्धारित करेंगे कि दस्तावेज़ पहली प्रक्रिया में लोकलहोस्ट मशीन पर है या नहीं। यदि यह उपलब्ध है, तो हम इसे 'रजिस्टर' पैरामीटर में संग्रहीत करेंगे और फिर हम टैग को विशिष्ट नाम देंगे ताकि जब हम प्लेबुक निष्पादित करें, तो हमारे लिए टैग तक पहुंचना आसान हो जाए। दूसरे कार्य में हम वही करेंगे जो हमने पहले कार्य में किया था, लेकिन टैग अद्वितीय होना चाहिए और फिर हम संबंधित संदेश के साथ कार्य को प्रदर्शित करने के लिए डिबग विकल्प का उपयोग करेंगे।
- मेजबान:- लोकलहोस्ट
इकट्ठा_तथ्य: झूठा
कार्य:
- नाम: फ़ाइल अस्तित्व की जाँच करें x`
स्थिति: पथ = ./host.yml
रजिस्टर: फ़ाइल मौजूद है
टैग: check_file
- डिबग:
संदेश: '{{'फ़ाइल मौजूद है' अगर fileExists.stat.exists और 'फ़ाइल नहीं मिली'}}'
टैग: check_file
- नाम: जांचें कि क्या host.yml वर्तमान उपयोगकर्ता द्वारा एक्सेस किया जा सकता है
खोल: स्टेट-सी '% ए' ./host.yml
रजिस्टर: एक्सेसपाथ
टैग: check_access
- डिबग:
संदेश: '{{'फ़ाइल पहुँच योग्य है' यदि (accessPath.stdout|int) <660 अन्य 'फ़ाइल पहुँच योग्य नहीं है'}}'
टैग: check_access
अब, हम मार्गदर्शिका को सहेजेंगे और फिर उसे बंद कर देंगे। हम ansible_tags.yml प्लेबुक चलाना चाहते हैं, इसलिए हम उपयोगकर्ताओं को आउटपुट दिखाने के लिए Ansible टर्मिनल में निम्न कमांड लिखेंगे।
[रूट @ मास्टर ansible] # ansible-playbook ansible_tags.yml –tags check_fileउपरोक्त आदेश चलाने के बाद, हम बदले में वांछित आउटपुट प्राप्त करेंगे। जैसा कि नीचे दिखाया गया है, केवल एक कार्य निष्पादित किया जाता है और वह आउटपुट में प्रदर्शित होता है जो 'चेक फ़ाइल अस्तित्व' है।
उदाहरण 02: अन्सिबल प्लेबुक में विशेष टैग पर ध्यान न दें
यहाँ Ansible टैग का दूसरा उदाहरण दिया गया है जहाँ हम “स्किप” टैग पर जा रहे हैं। यह आप पर निर्भर है कि आप सभी कार्यों को अनदेखा करना चाहते हैं या आप Ansible में प्लेबुक के किसी विशेष कार्य को अनदेखा करना चाहते हैं। हम उदाहरण 1 कार्यान्वयन का उपयोग कर रहे हैं और फिर हम Ansible टर्मिनल में केवल नीचे दिए गए कथन को लिखकर कार्य को छोड़ देंगे।
[रूट @ मास्टर ansible] # ansible-playbook ansible_tags.yml --स्किप-टैग check_fileऊपर दिए गए आदेश से, हमने 'चेक फ़ाइल अस्तित्व' कार्य को केवल अनदेखा कर दिया है। अब, आउटपुट में केवल एक ही कार्य प्रदर्शित होता है जो हरे फ़ॉन्ट में 'फ़ाइल सुलभ' है।
उदाहरण 03: अन्सिबल प्लेबुक में हमेशा टास्क को चलाते रहें
हम Ansible टैग के आधार पर तीसरा उदाहरण लागू करने जा रहे हैं। इस उदाहरण में, हम 'हमेशा' टैग का उपयोग करेंगे, जिसका अर्थ है कि एक विशेष टैग हमेशा अन्सिबल प्लेबुक में निष्पादित होगा। प्लेबुक लॉन्च करने के लिए, निम्नलिखित कमांड का उपयोग करें:
[जड़ @ मास्टर ansible] # नैनो ansible_tags.ymlप्लेबुक में, हमने चलाने के लिए कई कार्य बनाए हैं लेकिन हमने अंतिम कार्य में 'हमेशा' टैग पास किया है जो 'इन्वेंट्री से पासवर्ड हटाएं' है। प्लेबुक में कार्यान्वित आदेश निम्नलिखित हैं:
- मेजबान: सबइकट्ठा_तथ्य: झूठा
कार्य:
- नाम: फ़ाइल अस्तित्व की जाँच करें
स्थिति: पथ = ./host.yml
रजिस्टर: फ़ाइल मौजूद है
डेलीगेट_टू: लोकलहोस्ट
टैग: check_file
- डिबग:
संदेश: '{{'फ़ाइल मौजूद है' अगर fileExists.stat.exists और 'फ़ाइल नहीं मिली'}}'
टैग: check_file
- नाम: जांचें कि क्या host.yml वर्तमान उपयोगकर्ता द्वारा एक्सेस किया जा सकता है
खोल: स्टेट-सी '% ए' ./host.yml
रजिस्टर: एक्सेसपाथ
डेलीगेट_टू: लोकलहोस्ट
टैग: check_access
- डिबग:
संदेश: '{{'फ़ाइल पहुँच योग्य है' यदि (accessPath.stdout|int) <660 अन्य 'फ़ाइल पहुँच योग्य नहीं है'}}'
टैग: check_access
- नाम: इन्वेंट्री से पासवर्ड हटाएं
लाइनइनफाइल:
पथ: '{{inventory_file}}'
regexp: '\b{{आइटम}}.*\b'
राज्य: अनुपस्थित
डेलीगेट_टू: लोकलहोस्ट
बनना: झूठा
टैग: हमेशा
with_items:
- ansible_password
उसके बाद, हम नियंत्रक और लक्ष्य दूरस्थ होस्ट के बीच संबंध बनाने के लिए इन्वेंट्री फ़ाइल बनाएंगे। नीचे कमांड है:
[जड़ @ मास्टर ansible] # नैनो host.ymlयहाँ इन्वेंट्री फ़ाइल है जिसमें Ansible में 'Linux_host' से संबंधित जानकारी है।
सभी:मेजबान:
लिनक्स_होस्ट:
ansible_host: 192.168.3.229
ansible_user: ansible
ansible_password: ******
ansible_connection: ssh
ansible_port: 22
वांछित आउटपुट प्राप्त करने के लिए, हम निम्नलिखित कमांड को अन्सिबल टर्मिनल में चलाएंगे:
[रूट @ मास्टर ansible] # ansible-playbook ansible_tags.yml --tags check_file -i host.yml
निष्कर्ष
इस लेख में Ansible में टैग के बारे में बताया गया है। अब हम टैग्स के कार्य और Ansible में उन स्थानों को समझते हैं जहाँ हम उन्हें लागू करेंगे। सीखने वाले को अन्सिबल टैग की अवधारणा को समझने में मदद करने के लिए, हमने कई तरह के उदाहरण विकसित किए हैं।