कठपुतली - मॉड्यूल
कठपुतली में, एक मॉड्यूल को संसाधनों, वर्गों, फ़ाइलों, परिभाषा और टेम्पलेट्स के संग्रह के रूप में परिभाषित किया जा सकता है। कठपुतली मॉड्यूलों के आसान वितरण का समर्थन करती है, जो कोड के प्रतिरूपकता में बहुत सहायक है क्योंकि एक निर्दिष्ट जेनेरिक मॉड्यूल लिख सकता है और बहुत कम सरल कोड परिवर्तनों के साथ कई बार इसका उपयोग कर सकता है। उदाहरण के लिए, यह / etc / कठपुतली के तहत डिफ़ॉल्ट साइट कॉन्फ़िगरेशन को सक्षम करेगा, जिसमें पुपेट द्वारा उचित मॉड्यूल में / etc / share / कठपुतली को भेज दिया जाएगा।
मॉड्यूल विन्यास
किसी भी कठपुतली मॉड्यूल में, हमारे पास दो विभाजन होते हैं जो कोड की संरचना को परिभाषित करने और हर को नियंत्रित करने में मदद करते हैं।
मॉड्यूल के खोज पथ को बृहदान्त्र-अलग-अलग निर्देशिकाओं की सूची का उपयोग करके कॉन्फ़िगर किया गया है puppetmasterd या masterdपपेट के मास्टर कॉन्फ़िगरेशन फ़ाइल के बाद के भाग के साथ modulepath पैरामीटर।
[puppetmasterd]
...
modulepath = /var/lib/puppet/modules:/data/puppet/modules
Fileserver.conf में फ़ाइल सर्वर मॉड्यूल के लिए एक्सेस कंट्रोल सेटिंग्स, उस मॉड्यूल के लिए पथ कॉन्फ़िगरेशन को हमेशा अनदेखा किया जाता है, और एक पथ निर्दिष्ट करने से एक चेतावनी उत्पन्न होगी।
खोज पथ को PUPPETLAB पर्यावरण चर को सेट करके रनटाइम पर जोड़ा जा सकता है जो कि औपनिवेशिक-अलग-अलग चर की सूची होनी चाहिए।
मॉड्यूल स्रोत
कठपुतली भंडारण मॉड्यूल के लिए एक अलग स्थान का समर्थन करता है। किसी भी मॉड्यूल को किसी विशेष मशीन के विभिन्न फ़ाइल सिस्टम में संग्रहीत किया जा सकता है। हालांकि, सभी पथ जहां मॉड्यूल संग्रहीत हैं, उन्हें कॉन्फ़िगरेशन चर में निर्दिष्ट किया जाना चाहिएmodulepath जो सामान्य रूप से एक पथ चर है, जहां कठपुतली सभी मॉड्यूल निर्देशिकाओं के लिए स्कैन करती है और बूट होने पर उन्हें लोड करती है।
एक उचित डिफ़ॉल्ट पथ के रूप में कॉन्फ़िगर किया जा सकता है -
/etc/puppet/modules:/usr/share/puppet:/var/lib/modules.
वैकल्पिक रूप से, / etc / कठपुतली निर्देशिका को एक विशेष अनाम मॉड्यूल के रूप में स्थापित किया जा सकता है, जिसे हमेशा पहले खोजा जाता है।
मॉड्यूल नामकरण
कठपुतली एक विशेष मॉड्यूल के समान नामकरण मानकों का अनुसरण करती है, जिसमें मॉड्यूल नाम सामान्य शब्द होना चाहिए, [- \\ w +] (अक्षर, शब्द, संख्या, अंडरस्कोर और डैश) से मेल खाते हुए और नाम स्थान विभाजक से युक्त नहीं:: / /। हालांकि इसे मॉड्यूल पदानुक्रम के बारे में अनुमति दी जा सकती है, नए मॉड्यूल के लिए इसे नेस्टेड नहीं किया जा सकता है।
मॉड्यूल आंतरिक संगठन
जब उपयोगकर्ता कठपुतली में एक नया मॉड्यूल बनाता है, तो यह उसी संरचना का अनुसरण करता है और इसमें एक विशिष्ट निर्देशिका संरचना में व्यवस्थित, वितरित फ़ाइल, प्लगइन्स और टेम्पलेट शामिल होते हैं जैसा कि निम्नलिखित कोड में दिखाया गया है।
MODULE_PATH/
downcased_module_name/
files/
manifests/
init.pp
lib/
puppet/
parser/
functions
provider/
type/
facter/
templates/
README
जब भी कोई मॉड्यूल बनाया जाता है, उसमें शामिल होता है init.ppमैनिफ़ेस्ट निर्देशिका के अंदर निर्दिष्ट फ़िक्स स्थान पर मैनिफ़ेस्ट फ़ाइल। यह मैनिफ़ेस्ट फ़ाइल एक डिफ़ॉल्ट फ़ाइल है जो किसी विशेष मॉड्यूल में पहले निष्पादित होती है और उस विशेष मॉड्यूल से जुड़े सभी वर्गों का एक संग्रह होता है। अतिरिक्त.ppफ़ाइल सीधे मैनिफ़ेस्ट फ़ोल्डर के तहत जोड़ी जा सकती है। यदि हम अतिरिक्त .pp फाइलें जोड़ रहे हैं, तो उन्हें कक्षा के नाम पर रखा जाना चाहिए।
मॉड्यूल का उपयोग करके हासिल की गई एक महत्वपूर्ण विशेषता कोड साझाकरण है। प्रकृति द्वारा एक मॉड्यूल स्व-निहित होना चाहिए, जिसका अर्थ है कि किसी भी मॉड्यूल को कहीं से भी शामिल करने में सक्षम होना चाहिए और इसे मॉड्यूल पथ पर छोड़ देना चाहिए, जो कि पपेट बूट अप होने पर लोड हो जाता है। मॉड्यूल की मदद से, कठपुतली अवसंरचना कोडिंग में एकरूपता प्राप्त होती है।
उदाहरण
एक ऑटोफ़ोर्स मॉड्यूल पर विचार करें जो एक निश्चित ऑटो.होम मैप स्थापित करता है और टेम्पलेट्स से ऑटो.मास्टर उत्पन्न करता है।
class autofs {
package { autofs: ensure => latest }
service { autofs: ensure => running }
file { "/etc/auto.homes":
source => "puppet://$servername/modules/autofs/auto.homes"
}
file { "/etc/auto.master":
content => template("autofs/auto.master.erb")
}
}
फ़ाइल सिस्टम में निम्न फ़ाइलें होंगी।
MODULE_PATH/
autofs/
manifests/
init.pp
files/
auto.homes
templates/
auto.master.erb
मॉड्यूल लुकअप
कठपुतली एक पूर्व-परिभाषित संरचना का अनुसरण करती है, जिसमें एक परिभाषित संरचना में कई निर्देशिकाएँ और उपनिर्देशिकाएँ होती हैं। इन निर्देशिकाओं में विभिन्न प्रकार की फाइलें होती हैं जिन्हें कुछ क्रियाओं को करने के लिए एक मॉड्यूल की आवश्यकता होती है। थोड़ा पीछे के दृश्यों का जादू यह सुनिश्चित करता है कि सही फ़ाइल सही संदर्भ से जुड़ी है। सभी मॉड्यूल खोज मॉड्यूलपथ के भीतर हैं, निर्देशिकाओं की एक बृहदान्त्र-पृथक सूची।
फाइलरवर पर फ़ाइल संदर्भों के लिए, एक समान संदर्भ का उपयोग किया जाता है ताकि कठपुतली का एक संदर्भ: //$servername/modules/autofs/auto.homes फ़ाइल के ऑटोफ़ॉक्स / फ़ाइल / ऑटो.होम्स को मॉड्यूल के पथ में हल करता है।
कमांड लाइन क्लाइंट और कठपुतली मास्टर दोनों के साथ एक मॉड्यूल को प्रयोग करने योग्य बनाने के लिए, कोई कठपुतली के URL का उपयोग कर सकता है: /// पथ। यानी एक स्पष्ट सर्वर नाम के बिना एक URL। इस तरह के URL से थोड़ा अलग व्यवहार किया जाता हैPuppet तथा puppetd। कठपुतली स्थानीय फाइल सिस्टम में सर्वर रहित URL की खोज करती है।
टेम्प्लेट फ़ाइलों को प्रकट और फ़ाइलों के समान तरीके से खोजा जाता है: टेम्प्लेट का एक उल्लेख ("ऑटोफ़्स / ऑटो.मास्टरबीबी") कठपुतली को पहले एक फ़ाइल के लिए देखेगा $templatedir/autofs/auto.master.erb और फिर autofs/templates/auto.master.erbमॉड्यूल पथ पर। कठपुतली के तहत सब कुछ के कठपुतली संस्करणों के साथ, यह उपयोग करने के लिए उपलब्ध है। इसे मॉड्यूल ऑटो लोडिंग कहा जाता है। कठपुतली मॉड्यूल से ऑटो-लोड कक्षाओं और परिभाषाओं का प्रयास करेगी।