पहले, सिस्टम प्रशासकों ने अपने सर्वर को चलाने के लिए शेल स्क्रिप्ट का उपयोग किया, और इस पद्धति में शून्य मापनीयता थी। लगातार बदलते सर्वरों और उनके सिस्टम कॉन्फ़िगरेशन के लिए लगातार सैकड़ों या हजारों लिपियों को संशोधित करना एक कठिन काम है।
इस लेख में कठपुतली मॉड्यूल और मैनिफ़ेस्ट आइए देखें कि हम सर्वर सेटअप, प्रोग्राम इंस्टॉलेशन और सिस्टम प्रबंधन को स्वचालित करने के लिए कठपुतली मॉड्यूल का उपयोग कैसे कर सकते हैं।
यह ब्लॉग निम्नलिखित विषयों को कवर करेगा:
- कठपुतली प्रोग्रामिंग का परिचय
- कठपुतली प्रोग्रामिंग में मुख्य शब्द
- कठपुतली कार्यक्रम वर्कफ़्लो
- प्रदर्शन: अपाचे और MySQL की स्थापना को स्वचालित करना
कठपुतली प्रोग्रामिंग का परिचय
कठपुतली लोकप्रिय रूप से उपयोग किए जाने वाले DevOps टूल में से एक है जो व्यापक रूप से कॉन्फ़िगरेशन प्रबंधन के लिए उपयोग किया जाता है। इसका उपयोग करने के लिए किया जाता है संगति इन्फ्रास्ट्रक्चर में। कठपुतली बुनियादी ढांचे को कोड के रूप में परिभाषित कर सकती है, कई सर्वरों का प्रबंधन कर सकती है और सिस्टम कॉन्फ़िगरेशन को लागू कर सकती है, इस प्रकार बुनियादी ढांचे के प्रबंधन की प्रक्रिया को स्वचालित करने में मदद करती है।
कठपुतली हैइसकी अपनी विन्यास भाषा, कठपुतली डी.एस.एल.
। अन्य DevOps कार्यक्रमों के साथ, कठपुतली स्वचालित रूप से परिवर्तन करता है, मैन्युअल स्क्रिप्ट-चालित परिवर्तनों को समाप्त करता है। हालांकि, कठपुतली केवल एक और खोल भाषा नहीं है, न ही यह एक शुद्ध प्रोग्रामिंग भाषा है, जैसे कि PHP। इसके बजाय, कठपुतली उपयोग करता हैसेवा मेरे घोषणात्मक मॉडल-आधारित दृष्टिकोण आईटी स्वचालन के लिए। यह कठपुतली को बुनियादी ढांचे को कोड के रूप में परिभाषित करने और कार्यक्रमों के साथ सिस्टम कॉन्फ़िगरेशन को लागू करने में सक्षम बनाता है।
डेमो के साथ आने से पहले, आइए कठपुतली प्रोग्रामिंग के कुछ मुख्य पहलुओं को देखें।
सीएसएस स्प्राइट का उपयोग कैसे करें
कठपुतली प्रोग्रामिंग में मुख्य शब्द
प्रकट होते हैं
कठपुतली कार्यक्रम कहा जाता है प्रकट होना और के साथ एक फ़ाइल नाम है .pp विस्तार। कठपुतली का डिफ़ॉल्ट मुख्य रूप है /etc/puppet/manifests/site.pp
। (यह परिभाषित करता हैवैश्विक सिस्टम कॉन्फ़िगरेशन, जैसे LDAP कॉन्फ़िगरेशन, DNS सर्वर या अन्य कॉन्फ़िगरेशन जो प्रत्येक नोड पर लागू होते हैं)।
कक्षाएं
इन अभिव्यक्तियों के भीतर कोड ब्लॉक कहलाते हैं कक्षाएं अन्य मॉड्यूल कॉल कर सकते हैं। कक्षाएं कार्यक्षमता के बड़े या मध्यम आकार के विखंडू को कॉन्फ़िगर करती हैं, जैसे कि सभी पैकेज, कॉन्फ़िगरेशन फ़ाइलें, और एप्लिकेशन चलाने के लिए आवश्यक सेवाएं। कक्षाएं पपेट कोड का पुन: उपयोग करना और पठनीयता में सुधार करना आसान बनाती हैं।
संसाधन
कठपुतली कोड ज्यादातर संसाधन घोषणाओं से बना है। ए संसाधन सिस्टम के वांछित राज्य के बारे में एक विशिष्ट तत्व का वर्णन करता है। उदाहरण के लिए, यह शामिल हो सकता है कि एक विशिष्ट फ़ाइल मौजूद होनी चाहिए या एक पैकेज स्थापित होना चाहिए।
कठपुतली मॉड्यूल
सिवाय मुख्य केsite.pp
प्रकट,यह मेनिफेस्टों को संग्रहीत करता हैमें है मॉड्यूल ।
हमारे सभी कठपुतली कोड मॉड्यूल में आयोजित किए जाते हैं जो कठपुतली के बुनियादी निर्माण खंड हैं जिन्हें हम पुन: उपयोग और साझा कर सकते हैं। प्रत्येक मॉड्यूल बुनियादी ढांचे में एक विशिष्ट कार्य का प्रबंधन करता है, जैसे कि सॉफ़्टवेयर का एक टुकड़ा स्थापित करना और कॉन्फ़िगर करना।
मॉड्यूल में कठपुतली कक्षाएं, परिभाषित प्रकार, कार्य, कार्य योजना, क्षमता, संसाधन प्रकार और प्लगइन्स शामिल हैं, उदाहरण के लिए, कस्टम प्रकार या तथ्य। कठपुतली में मॉड्यूल स्थापित करेंमॉड्यूल-पथ। कठपुतली मॉड्यूल-पथ में प्रत्येक मॉड्यूल से सभी सामग्री को लोड करती है, जिससे यह कोड उपयोग के लिए उपलब्ध होता है।
Puppetlabs में पूर्व-परिभाषित मॉड्यूल हैं, जिन्हें हम उन्हें डाउनलोड करके तुरंत उपयोग कर सकते हैं कठपुतली का दल
। आप अपनी आवश्यकताओं के अनुरूप एक कस्टम कठपुतली मॉड्यूल भी बना सकते हैं।
कठपुतली कार्यक्रम वर्कफ़्लो
हम पुस्टेट की घोषणात्मक भाषा का उपयोग मैनिफ़ेस्ट नामक फ़ाइलों में सिस्टम की वांछित स्थिति का वर्णन करने के लिए करेंगे। मैनिफ़ेस्ट वर्णन करते हैं कि आपको अपने नेटवर्क और ऑपरेटिंग सिस्टम संसाधनों को कैसे कॉन्फ़िगर करना चाहिए, जैसे कि फाइलें, पैकेज और सेवाएं।
कठपुतली संकलन में प्रकट होता है कैटलॉग और यह टी के उस विन्यास को सुनिश्चित करने के लिए प्रत्येक कैटलॉग को उसके संबंधित नोड पर लागू करता हैवह सही हैआपके बुनियादी ढांचे के पार।
प्रदर्शन: अपाचे और MySQL की स्थापना को स्वचालित करना
कठपुतली मॉड्यूल पर यह लेख हाथों पर है कि कठपुतली मॉड्यूल का उपयोग करने के दो तरीके दिखाई देंगे और आपको यह भी सिखाएंगे कि कैसे स्वचालित करना इन दो मॉड्यूल के साथ कॉन्फ़िगर किए गए सर्वर की स्थापना।
इसके साथ शुरू करने के लिए, सुनिश्चित करें कि आपके पास एक कठपुतली बुनियादी ढांचा तैयार है जो एक कठपुतली मास्टर सर्वर और 2 कठपुतली एजेंटों को शामिल करेगा।
- कठपुतली मास्टर: उबंटू 18.04
- एजेंट 1: उबंटू 18.04
- एजेंट 2:सेंटोस 7
यहां इस बात की रूपरेखा दी गई है कि हम इस पर क्या हासिल करेंगे:
तो चलिए हाथों से शुरू करते हैं:
खरोंच से एक मॉड्यूल बनाना
इस कठपुतली मॉड्यूल में, हम अपाचे पैकेज को डाउनलोड करने, फ़ाइलों को कॉन्फ़िगर करने और वर्चुअल होस्ट स्थापित करने जैसे कार्यों से निपटेंगे।
- कठपुतली मास्टर से, कठपुतली के मॉड्यूल निर्देशिका पर जाएँ और अपाचे निर्देशिका बनाएँ:
सीडी / आदि / कठपुतली / मॉड्यूल sudo mkdir apache
- अपाचे निर्देशिका के अंदर से, उपनिर्देशिकाएँ बनाएँ: मैनिफ़ेस्ट, टेम्प्लेट, फ़ाइल और उदाहरण।
सीडी अपाचे sudo mkdir {मैनिफ़ेस्ट, टेम्प्लेट, फ़ाइलें, उदाहरण}
- मैनिफ़ेस्ट्स निर्देशिका में नेविगेट करें:
सीडी प्रकट होता है
- यहां से, हम कोड के उस भाग के लक्ष्यों के आधार पर मॉड्यूल को कक्षाओं में अलग करेंगे।
init.pp -> अपाचे पैकेज डाउनलोड करने के लिए
params.pp -> किसी भी चर और मापदंडों को परिभाषित करने के लिए
config.pp -> अपाचे सेवा के लिए किसी भी विन्यास फाइल को प्रबंधित करने के लिए।
vhosts.pp -> आभासी मेजबानों को परिभाषित करने के लिए।
यह मॉड्यूल का उपयोग भी करेगा हियरा ()एक अंतर्निहित कुंजी-मूल्य कॉन्फ़िगरेशन डेटा लुकअप सिस्टम, जिसका उपयोग पपेट कोड से डेटा को अलग करने के लिए किया जाता है) डेटा, प्रत्येक नोड के लिए चर स्टोर करने के लिए।
चरण 1: अपाचे पैकेज डाउनलोड करना
Init.pp वर्ग बनाएँ
अब हम एक बनाएंगेinit.pp
अपाचे पैकेज धारण करने के लिए मैनिफ़ेस्ट डायरेक्टरी के तहत फ़ाइल।
जैसा कि हमारे पास 2 अलग-अलग OS (ubuntu और CentOS7) हैं जो अपाचे के लिए अलग-अलग पैकेज नामों का उपयोग करते हैं, हमें एक चर का उपयोग करना होगा$ अपाचेनाम
।
/etc/puppetlabs/code/en परिवेश/production/modules/apache/manifests/inif.pp
वर्ग अपाचे {पैकेज {ache अपाचे ’: नाम => $ अपाचेनाम, सुनिश्चित करें => वर्तमान,}}
पैकेज संसाधन पैकेज के प्रबंधन के लिए अनुमति देता है। इसका उपयोग पैकेज को जोड़ने, हटाने या सुनिश्चित करने के लिए किया जाता है।
ज्यादातर मामलों में, नाम संसाधन का (अमरीका की एक मूल जनजाति, ऊपर) प्रबंधित होने वाले पैकेज का नाम होना चाहिए। विभिन्न नामकरण सम्मेलनों के कारण,हम पैकेज का वास्तविक नाम कहते हैंके साथ पर नाम संदर्भ। इसलिए नाम , अभी तक अपरिभाषित चर के लिए कॉल करता है$ अपाचेनाम
।
सुनिश्चित करें संदर्भ सुनिश्चित करता है कि पैकेज हैवर्तमान।
Params.pp फ़ाइल बनाएँ
दparams.pp
फ़ाइल आवश्यक चर को परिभाषित करेगी। जबकि हम इन चरों को परिभाषित कर सकते हैंinit.pp
फ़ाइल, चूँकि अधिक चर का उपयोग संसाधन प्रकार के बाहर ही करने की आवश्यकता होगी, aparams.pp
फ़ाइल चर को परिभाषित करने की अनुमति देती हैअगरबयान और कई वर्गों में इस्तेमाल किया।
बनाओparams.pp
फ़ाइल और निम्न कोड।
/etc/puppetlabs/code/en परिवेश/production/modules/apache/manifests/paral.pp
वर्ग अपाचे :: params {अगर $ :: osfamily == 'RedHat' {$ apachename = 'httpd'} elsif $ :: osfamily == 'डेबियन' {$ apachename = 'apache2'} और {{विफल ('यह नहीं है) समर्थित डिस्ट्रो। ')}}
मूल के बाहर init.pp
वर्ग, प्रत्येक वर्ग नाम से दूर शाखा की जरूरत हैअमरीका की एक मूल जनजाति। इस वर्ग को हम कहते हैं अपाचे :: परम । डबल कोलन के बाद का नाम फ़ाइल के साथ एक नाम साझा करना चाहिए। एकअगरबयान का उपयोग मापदंडों को परिभाषित करने के लिए किया जाता है, द्वारा प्रदान की गई जानकारी से खींचकर Facter , कठपुतली की स्थापना के एक हिस्से के रूप में फैक्टर इंस्टॉलेशन है। यहाँ, फैक्टर ऑपरेटिंग सिस्टम परिवार को नीचे खींच देगा (ओसफमिली), अगर यह है तो विचार करने के लिएलाल टोपी
याडेबियन आधारित।
अंत में परिभाषित मापदंडों के साथ, हमें कॉल करने की आवश्यकता है params.pp
फ़ाइल और मापदंडों मेंinit.pp
। ऐसा करने के लिए, हमें वर्ग के नाम के बाद पैरामीटर जोड़ने की जरूरत है, लेकिन घुंघराले ब्रैकेट से पहले({) है।
इतनाinit.pp
कि हमने पहले बनाया था कुछ इस तरह दिखना चाहिए:
जावा में स्कैनर वर्ग का उपयोग करना
वर्ग अपाचे ($ apachename = $ :: apache :: params :: apachename,) विरासत में मिलते हैं :: Apache :: params {पैकेज {'apache': नाम => $ apachename, सुनिश्चित करें => वर्तमान,}}
मान स्ट्रिंग $ :: apache :: params :: मान
कठपुतली से मान खींचने के लिए कहता है अमरीका की एक मूल जनजाति मॉड्यूल, परम क्लास, उसके बाद पैरामीटर नाम। टुकड़ा विरासत :: अपाचे :: परम
की अनुमति देता हैinit.pp
इन मूल्यों को प्राप्त करने के लिए।
चरण 2: कॉन्फ़िगरेशन फ़ाइलों को प्रबंधित करें
आप Red Hat- या Debian- आधारित प्रणाली पर काम कर रहे हैं या नहीं इसके आधार पर अपाचे विन्यास फाइल अलग होगी।
आप इस डेमो के अंत में निम्नलिखित निर्भरता फ़ाइलें पा सकते हैं:httpd.conf
(लाल टोपी),apache2.conf
(डेबियन)।
- की सामग्री की प्रतिलिपि बनाएँ
httpd.conf
तथाapache2.conf
अलग फ़ाइलों में और उन्हें बचाने के लिए फ़ाइलें निर्देशिकापर/ etc / कठपुतली / कोड / वातावरण / उत्पादन / मॉड्यूल / एपाचे / फाइलें
।
- दोनों फ़ाइलों को संपादित करें अक्षम करें जिंदा रहो। आपको लाइन जोड़ने की आवश्यकता होगी KeepAlive बंद करें में
httpd.conf
फ़ाइल। यदि आप इस सेटिंग को बदलना नहीं चाहते हैं, तो हमें प्रत्येक के ऊपर एक टिप्पणी जोड़ना चाहिएफ़ाइल:
/etc/puppetlabs/code/en परिवेश/production/modules/apache/files/httpd.conf
# इस फ़ाइल को कठपुतली द्वारा प्रबंधित किया जाता है
इन फ़ाइलों को जोड़ेंinit.pp
फ़ाइल, इसलिए कठपुतली को इन फ़ाइलों का स्थान मास्टर सर्वर और एजेंट नोड्स दोनों पर पता चल जाएगा। ऐसा करने के लिए, हम इसका उपयोग करते हैं फ़ाइल संसाधन।
/etc/puppetlabs/code/en परिवेश/production/modules/apache/manifests/inif.pp
फ़ाइल {'कॉन्फ़िगरेशन-फ़ाइल': पथ => $ conffile, सुनिश्चित करें => फ़ाइल, स्रोत => $ confsource,}
क्योंकि हमारे पास दो अलग-अलग स्थानों में कॉन्फ़िगरेशन फ़ाइलें हैं, हम संसाधन को सामान्य नाम देते हैं विन्यास फाइल फ़ाइल के साथ पथ के साथ एक पैरामीटर के रूप में परिभाषित किया गया हैपथविशेषता।
सुनिश्चित करें यह सुनिश्चित करता है कि यह एक फाइल है।
स्रोत ऊपर बनाई गई फ़ाइलों के कठपुतली मास्टर पर स्थान प्रदान करता है।
को खोलोparams.pp
फ़ाइल।
हम परिभाषित करते हैं $ शंकुधारी
तथा $ कॉन्फ्रेस
चर के भीतरअगरबयान:
/etc/puppetlabs/code/en परिवेश/production/modules/apache/manifests/paral.pp
अगर $ :: osfamily == 'RedHat' {... $ conffile = '/etc/httpd/conf/httpd.conf' $ confsource = 'कठपुतली: ///modules-apache/httpd.conf'} elsif $: : osfamily == 'डेबियन' {... $ conffile = '/etc/apache2/apache2.conf' $ confsource = 'कठपुतली: ///modules/apache/apache2.conf'} और {...
हमें शुरुआत में मापदंडों को जोड़ना होगाअमरीका की एक मूल जनजातिमें कक्षा घोषणाinit.pp
फ़ाइल, पिछले उदाहरण के समान।
जब कॉन्फ़िगरेशन फ़ाइल बदलती है, तो अपाचे को पुनरारंभ करने की आवश्यकता होती है। इसे स्वचालित करने के लिए, हम सेवा संसाधन का उपयोग कर सकते हैंसंयोजन के साथ सूचित करें जब भी कॉन्फ़िगरेशन फ़ाइल बदली जाती है, तो संसाधन को कॉल करने के लिए संसाधन कॉल करेगा:
/etc/puppetlabs/code/en परिवेश/production/modules/apache/manifests/inif.pp
फ़ाइल {'कॉन्फ़िगरेशन-फ़ाइल': पथ => $ conffile, सुनिश्चित करें => फ़ाइल, स्रोत => $ confsource, सूचना => सेवा ['apache-service'],} सेवा {'apache-service': name => $ अपाचेनाम, हैरेस्टार्ट => सत्य,}
सर्विस संसाधन पहले से निर्मित पैरामीटर का उपयोग करता है जो Red Hat और Debian सिस्टम पर Apache नाम को परिभाषित करता है।
हेरास्टार्ट परिभाषित सेवा को पुनरारंभ करने के लिए विशेषता का उपयोग किया जाता है।
चरण 3: वर्चुअल होस्ट फ़ाइलें बनाएँ
आपके सिस्टम के वितरण के आधार पर वर्चुअल होस्ट की फ़ाइलों को अलग तरीके से प्रबंधित किया जाएगा। इस वजह से, हम वर्चुअल होस्ट्स के लिए कोड को एक में एनकोड करेंगेअगरएक में इस्तेमाल किया के समान बयानparams.pp
वर्ग लेकिन वास्तविक कठपुतली संसाधनों से युक्त।
- के भीतर सेअपाचे / मैनिफेस्ट /निर्देशिका, बनाएँ और खोलें
vhosts.pp
फ़ाइल। का कंकाल जोड़ेंअगरबयान:
/etc/puppetlabs/code/en परिवेश/production/modules/apache/manifests/hhosts.pp
वर्ग अपाचे :: vhosts {यदि $ :: osfamily == 'RedHat' {} elsif $ :: osfamily == 'डेबियन' {} और {}}
हमारे CentOS 7 सर्वर पर वर्चुअल होस्ट फ़ाइल का स्थान है/etc/httpd/conf.d/vhost.conf
।
आपको कठपुतली मास्टर पर एक टेम्पलेट के रूप में फ़ाइल बनाने की आवश्यकता है। उबंटू वर्चुअल होस्ट फ़ाइल के लिए भी ऐसा ही करें, जो यहां स्थित है/etc/apache2/sites-available/example.com.conf
, की जगहexample.comसर्वर के FQDN के साथ।
- पर नेविगेट करें टेम्पलेट्स के भीतर दर्ज करें अमरीका की एक मूल जनजाति मॉड्यूल और फिर अपने वर्चुअल होस्ट के लिए दो फाइलें बनाएं:
Red Hat सिस्टम के लिए:
/etc/puppetlabs/code/en परिवेश/production/modules/apache/templates/vhosts-rh.conf.erb
ServerAdmin ServerName ServerAlias www। DocumentRoot / var / www // public_html / ErrorLog /var/www//logs/error.log CustomLog /var/www//logs/access.log संयुक्त
डेबियन सिस्टम के लिए:
/etc/puppet/modules/apache/templates/vhosts-deb.conf.erb
ServerAdmin ServerName ServerAlias www। DocumentRoot / var / www / html // public_html / ErrorLog /var/www/html//logs/error.log CustomLog /var/www/html//logs/access.log संयुक्तसभी की आवश्यकता है
हम इन फ़ाइलों में केवल दो चर का उपयोग करते हैं: व्यवस्थापन करना
तथा सर्वर का नाम
। हम इन्हें नोड-दर-नोड आधार पर परिभाषित करेंगे, भीतरsite.pp
फ़ाइल।
- इस पर लौटे
vhosts.pp
फ़ाइल। अब बनाए गए टेम्प्लेट को कोड में संदर्भित किया जा सकता है:
/etc/puppetlabs/code/en परिवेश/production/modules/apache/manifests/hhosts.pp
वर्ग अपाचे :: vhosts {यदि $ :: osfamily == 'RedHat' {फ़ाइल {/etc/httpd/conf.d/vhost.conf ': सुनिश्चित करें => फ़ाइल, सामग्री => टेम्पलेट (' अपाचे / vhosts-rh) .conf.erb '),}} elsif $ :: osfamily ==' डेबियन '{फ़ाइल {/etc/apache2/sites-available/osservername.conf': सुनिश्चित करें कि = फ़ाइल, सामग्री => टेम्पलेट ('अपाचे' /vhosts-deb.conf.erb '),}}} और {विफल (' यह समर्थित डिस्ट्रो नहीं है। ')}
दोनों वितरण परिवारों को कहते हैंफ़ाइलसंसाधन और संबंधित वितरण पर वर्चुअल होस्ट के स्थान का शीर्षक लें। डेबियन के लिए, यह एक बार और अधिक संदर्भित करने का मतलब है$ सर्वरनाम
मान। दसामग्रीविशेषता संबंधित टेम्प्लेट को कॉल करती है।
जावास्क्रिप्ट अलर्ट डाउनलोड करने के लिए लॉगिन करें
- दोनों वर्चुअल होस्ट फ़ाइलें दो निर्देशिकाओं का संदर्भ देती हैं। वे डिफ़ॉल्ट रूप से सिस्टम पर नहीं हैं। हम इनका उपयोग करके बना सकते हैंफ़ाइलसंसाधन, प्रत्येक के भीतरअगरबयान। पूरा
vhosts.conf
फ़ाइल जैसा दिखना चाहिए:
/etc/puppetlabs/code/en परिवेश/production/modules/apache/manifests/hhosts.pp
वर्ग अपाचे :: vhosts {यदि $ :: osfamily == 'RedHat' {फ़ाइल {/etc/httpd/conf.d/vhost.conf ': सुनिश्चित करें => फ़ाइल, सामग्री => टेम्पलेट (' अपाचे / vhosts-rh) .conf.erb '),} फ़ाइल {[/ var / www / $ servername', '/ var / www / $ servername / public_html', '/ var / www / $ servername / log',]: = = सुनिश्चित करें>> निर्देशिका,}} elsif $ :: osfamily == 'डेबियन' {फ़ाइल {/etc/apache2/sites-available/$servername.conf ': सुनिश्चित करें => फ़ाइल, सामग्री => टेम्पलेट (' अपाचे / vhosts-deb '। conf.erb '),} फ़ाइल {[' / var / www / $ servername ',' / var / www / $ servername / public_html ',' / var / www / $ servername / लॉग ']]: सुनिश्चित करें => निर्देशिका ,}} और {विफल ('यह समर्थित डिस्ट्रो नहीं है')}}
चरण 4: मॉड्यूल का परीक्षण करें
- पर नेविगेट करें
अपाचे / मैनिफेस्ट /
निर्देशिका, भागो कठपुतली कठपुतली कोडिंग सुनिश्चित करने के लिए सभी फ़ाइलों पर त्रुटि के बिना है:
सूडो / ऑप्ट / कठपुतली / बिन / कठपुतली पार्सर init.pp params.pp vhosts.s.
इसे खाली लौटना चाहिए, जिसमें कोई समस्या नहीं है।
- पर नेविगेट करें उदाहरण निर्देशिका के भीतरअमरीका की एक मूल जनजातिमापांक। बनाओ
init.pp
फ़ाइल और बनाई गई कक्षाओं को शामिल करें। के लिए मान बदलें$ सर्वरनाम
तथा$ व्यवस्थापक
अपने खुद के साथ:
/etc/puppetlabs/code/en परिवेश/production/modules/apache/examples/inc.pp
serveremail = 'webmaster@example.com' $ servername = 'puppet.example.com' में अपाचे में अपाचे शामिल हैं ::होस्ट्स
- मॉड्यूल चलाकर परीक्षण करें कठपुतली लागू साथ -नहीं टैग:
सुडो / ऑप्ट / कठपुतली / बिन / कठपुतली लागू - नहीं init.pp
इसे बिना किसी त्रुटि और आउटपुट के वापस करना चाहिए कि यह ईवेंट से रिफ्रेश को ट्रिगर करेगा। कठपुतली मास्टर पर अपाचे स्थापित और कॉन्फ़िगर करने के लिए, बिना फिर से चलाएं-नहीं, यदि वांछित है।
- मुख्य कठपुतली निर्देशिका पर वापस जाएँ और फिर पर जाएँप्रकट होता हैफ़ोल्डर (नहींअपाचे मॉड्यूल में मौजूद एक)।
सीडी / आदि / कठपुतली / कोड / वातावरण / उत्पादन / मैनिफेस्टो
बनाओsite.pp
फ़ाइल,और प्रत्येक एजेंट नोड के लिए अपाचे मॉड्यूल शामिल हैं। इसके लिए चर भी इनपुट करेंव्यवस्थापन करना
तथा सर्वर का नाम
पैरामीटर। तुम्हारीsite.pp
निम्नलिखित के सदृश होना चाहिए:
/etc/puppetlabs/code/en परिवेश/production/manifests/site.pp
नोड 'कठपुतली-agent-ubuntu.example.com' {$ adminemail = 'webmaster@example.com' $ servername = 'puppet.example.com' में अपाचे शामिल हैं अपाचे :: vhosts} नोड 'कठपुतली-एजेंट- centos.example .com '{$ adminemail =' webmaster@example.com '$ servername =' puppet.example.com 'में अपाचे में अपाचे शामिल हैं :: vhosts}
डिफ़ॉल्ट रूप से, आपके प्रबंधित नोड पर कठपुतली एजेंट सेवा प्रत्येक 30 मिनट में एक बार मास्टर के साथ स्वचालित रूप से जांच करेगी और मास्टर से किसी भी नए कॉन्फ़िगरेशन को लागू करेगी। आप स्वचालित रूप से चलने वाले स्वचालित एजेंट रन के बीच पपेट एजेंट प्रक्रिया को मैन्युअल रूप से लागू कर सकते हैं। अपने एजेंट नोड्स पर नया मॉड्यूल मैन्युअल रूप से चलाने के लिए, नोड्स में लॉग इन करें और चलाएं:
सुडो / ऑप्ट / कठपुतली / बिन / कठपुतली एजेंट -t
अब जब हमने सीख लिया है कि स्क्रैच से एक मॉड्यूल कैसे बनाया जाए, तो आइए जानें कि पपेटेटलैब के कठपुतली फोर्ज से पहले से मौजूद मॉड्यूल का उपयोग कैसे करें।
PuppetForge से एक मॉड्यूल का उपयोग करें
कठपुतली फोर्ज सर्वर को चलाने के लिए पहले से ही कई मॉड्यूल हैं। हम आपके द्वारा बनाए गए मॉड्यूल के रूप में बड़े पैमाने पर कॉन्फ़िगर कर सकते हैं और समय बचा सकते हैं क्योंकि हमें खरोंच से मॉड्यूल बनाने की आवश्यकता नहीं है।
सुनिश्चित करें कि आप में हैं / etc / कठपुतली / कोड / वातावरण / उत्पादन / मॉड्यूल
निर्देशिका और स्थापित करें कठपुतली फोर्ज का MySQL मॉड्यूल PuppetLabs द्वारा। यह किसी भी पूर्वापेक्षा मॉड्यूल को भी स्थापित करेगा।
सीडी / आदि / कठपुतली / कोड / वातावरण / उत्पादन / मॉड्यूल
sudo / opt / puppetlabs / bin / कठपुतली मॉड्यूल कठपुतलीबास-mysql स्थापित करते हैं
डेटाबेस बनाने के लिए Hiera का उपयोग करें
इससे पहले कि आप MySQL मॉड्यूल के लिए कॉन्फ़िगरेशन फ़ाइलें बनाएं, विचार करें कि आप सभी एजेंट नोड्स में समान मानों का उपयोग नहीं करना चाहते हैं। प्रति नोड सही डेटा के साथ कठपुतली की आपूर्ति करने के लिए, हम Hiera का उपयोग करते हैं। आप प्रति नोड एक अलग रूट पासवर्ड का उपयोग करेंगे, इस प्रकार विभिन्न MySQL डेटाबेस का निर्माण करेंगे।
- पर जाए
/ आदि / कठपुतली
और Hiera की कॉन्फ़िगरेशन फ़ाइल बनाएंhiera.yaml
मुख्य मेंकठपुतलीनिर्देशिका। आप Hiera के डिफ़ॉल्ट मानों का उपयोग करेंगे:
/etc/puppetlabs/code/en परिवेश/production/hiera.yaml
--- संस्करण: 5 पदानुक्रम: - नाम: आम रास्ता: आम.शामिल चूक: data_hash: yaml_data डेटादिर: डेटा
- फ़ाइल बनाएँ
आम
। यह डिफ़ॉल्ट को परिभाषित करेगा जड़ MySQL के लिए पासवर्ड:
/etc/puppetlabs/code/en परिवेश/production/common.yaml
mysql :: सर्वर :: root_password: 'पासवर्ड'
हम उपयोग करते हैंआम
फ़ाइलजब एक चर कहीं और परिभाषित नहीं होता है। इसका अर्थ है कि सभी सर्वर समान MySQL रूट पासवर्ड साझा करेंगे। सुरक्षा बढ़ाने के लिए इन पासवर्डों का भी उपयोग किया जा सकता है।
- MySQL मॉड्यूल की चूक का उपयोग करने के लिए आप एक जोड़ सकते हैं :: mysql :: सर्वर ’शामिल करें के लिए लाइन
site.pp
फ़ाइल। हालाँकि, इस उदाहरण में, आप अपने प्रत्येक नोड के लिए एक डेटाबेस बनाने के लिए मॉड्यूल की कुछ चूक को ओवरराइड करेंगे।
संपादित करेंsite.pp
निम्नलिखित मूल्यों के साथ फाइल करें:
नोड 'Puppetagent-ubuntu.example.com' {$ adminemail = 'webmaster@example.com' $ servername = 'hostname.example.com' में अपाचे शामिल हैं: अपाचे में शामिल हैं :: vhosts में mysql = सर्वर mysql :: db {'mydb_ शामिल हैं $ {fqdn} ': उपयोगकर्ता =>' myuser ', पासवर्ड =>' mypass ', dbname =>' mydb ', होस्ट => $ :: fqdn, अनुदान => [' SELECT ',' UPDATE '], टैग = > $ डोमेन,}} नोड 'Puppetagent-centos.example.com' {$ adminemail = 'webmaster@example.com' $ servername = 'hostname.example.com' में अपाचे शामिल हैं: अपाचे में शामिल हैं :: vhosts में mysql :: सर्वर mysql शामिल हैं :: db {'mydb _ $ {fqdn}': उपयोगकर्ता => 'myuser', पासवर्ड => 'mypass', dbname => 'mydb', होस्ट => $ :: fqdn, अनुदान => ['SELECT', ' अद्यतन '], टैग => $ डोमेन,}}
कठपुतली मास्टर से कठपुतली एजेंट को कठपुतली मॉड्यूल की स्थापना को स्वचालित करना
- आप इन अपडेट्स को प्रत्येक नोड पर SSH द्वारा प्रत्येक नोड में मैन्युअल रूप से चला सकते हैं और निम्नलिखित कमांड जारी कर सकते हैं:
सुडो / ऑप्ट / कठपुतली / बिन / कठपुतली एजेंट -t
- अन्यथा, आपके प्रबंधित नोड पर कठपुतली एजेंट सेवा प्रत्येक 30 मिनट में एक बार मास्टर के साथ स्वचालित रूप से जांच करेगी और मास्टर से किसी भी नए कॉन्फ़िगरेशन को लागू करेगी।
कैटलॉग Ubuntu एजेंट पर सफलतापूर्वक लागू किया गया
CentOS एजेंट पर कैटलॉग सफलतापूर्वक लागू किया गया
इस प्रकार, पूरी स्थापना हो जाती है स्वचालित बस कैटलॉग लगाने से एजेंट नोड्स पर।इस डेमो के लिए उपयोग की जाने वाली कोड फाइलें और निर्भरताएं मिल सकती हैं यहाँ ।
मुझे उम्मीद है कि इस डेमो ने कठपुतली मॉड्यूल और मैनिफेस्टों का एक स्पष्ट विचार प्राप्त करने और आईटी बुनियादी ढांचे को स्वचालित करने के लिए उनके उपयोग में मदद की है।इस स्थिति में, आपका काम इतना आसान हो जाता है, बस कठपुतली मास्टर में कॉन्फ़िगरेशन निर्दिष्ट करें और कठपुतली एजेंट स्वचालित रूप से मुख्य प्रकट का मूल्यांकन करेंगे और अपाचे और MySQL सेटअप को निर्दिष्ट करने वाले मॉड्यूल को लागू करेंगे। यदि आप किसी भी प्रश्न के साथ फंस गए हैं, तो कृपया उन्हें पोस्ट करने के लिए स्वतंत्र महसूस करें ।
अगर आपको यह मिल गया कठपुतली ट्यूटोरियल से मिलता जुलता, इसकी जाँच पड़ताल करो 250,000 से अधिक संतुष्ट शिक्षार्थियों के एक नेटवर्क के साथ एक विश्वसनीय ऑनलाइन शिक्षण कंपनी, एडुरेका द्वारा, दुनिया भर में फैली हुई है। Edureka DevOps प्रमाणन प्रशिक्षण पाठ्यक्रम, SDLC में कई चरणों को स्वचालित करने के लिए शिक्षार्थियों को विभिन्न DevOps प्रक्रियाओं और टूल जैसे कठपुतली, जेनकिंस, नागियोस और GIT में विशेषज्ञता प्राप्त करने में मदद करता है।