पिछले ब्लॉग में, हमने आपको दिखाया था कि अपनी मशीन को कठपुतली के साथ कैसे सेट करें और फिर MongoDB को स्थापित और कॉन्फ़िगर करें। चूंकि हम कई नोड्स या मशीनों को कॉन्फ़िगर करने जा रहे हैं, इसलिए हमें एक कठपुतली मास्टर की आवश्यकता है। हालांकि हमारे मामले में, हम एक गिट रिपॉजिटरी बनाएंगे जहां हम अपने मैनिफेस्ट को आगे बढ़ाएंगे और उन्हें अपनी मशीनों पर लागू करेंगे।
स्थानीय git रिपॉजिटरी बनाने के लिए पहले उस पथ का चयन करें जिसका आप उपयोग करना चाहते हैं अर्थात /opt/। फिर $sudo mkdir रिपॉजिटरी चलाकर git रिपॉजिटरी बनाएं। $sudo chown vagrant:vagrant repository आदेश जारी करके इस निर्देशिका की सामग्री को बदलने के लिए रूट उपयोगकर्ता की अनुमति प्राप्त करें। $ cd रिपॉजिटरी कमांड जारी करने के बाद इस निर्देशिका को git रिपॉजिटरी के रूप में आरंभ करने के लिए, $ git init --bare --shared चलाएँ यदि आप इस निर्देशिका में नेविगेट करते हैं तो आपको अब कुछ ऐसा देखना चाहिए
[email protected]:/vagrant/repository$ ls -l
total 12
-rw-rw-r-- 1 vagrant vagrant 23 Jul 15 07:46 HEAD
drwxr-xr-x 1 vagrant vagrant 64 Jul 15 07:46 branches
-rw-rw-r-- 1 vagrant vagrant 145 Jul 15 07:46 config
-rw-rw-r-- 1 vagrant vagrant 73 Jul 15 07:46 description
drwxr-xr-x 1 vagrant vagrant 352 Jul 15 07:46 hooks
drwxr-xr-x 1 vagrant vagrant 96 Jul 15 07:46 info
drwxr-xr-x 1 vagrant vagrant 128 Jul 15 07:46 objects
drwxr-xr-x 1 vagrant vagrant 128 Jul 15 07:46 refs
-rw-r--r-- 1 vagrant vagrant 0 Jul 1 15:58 test.pp
यह एक git रिपॉजिटरी की मूल संरचना है और विकल्प --bare तथा --share हमें निर्देशिका से फ़ाइलों को पुश और पुल करने में सक्षम करेंगे।
हमें एक ऐसी प्रणाली स्थापित करने की आवश्यकता है जो शामिल मशीनों और इस दूरस्थ मास्टर सर्वर के बीच संचार को सक्षम करे। इस मामले में सिस्टम को डेमॉन के रूप में संदर्भित किया जाएगा। डेमॉन इस रिपॉजिटरी में फ़ाइलों को खींचने या पुश करने के लिए दूरस्थ होस्ट से अनुरोध स्वीकार करेगा। ऐसा करने के लिए, आदेश जारी करें $git daemon --reuseaddr --base-path=/opt/ --export-all --enable=receive-pack
हालाँकि एक फ़ाइल बनाने के लिए अच्छा अभ्यास होगा जिससे हम इसे पृष्ठभूमि में चला सकते हैं। इसलिए हमें sudo vim /etc/systemd/system/gitd आदेश जारी करके सेवा सेट करने की आवश्यकता है। सर्विस। नई फ़ाइल में इसे इन सामग्रियों से भर दें
[Unit]
Description=Git Repo Server Daemon
[Service]
ExecStart=/usr/bin/git daemon --reuseaddr --base-path=/opt/ --export-all --enable=receive-pack
[Install]
WantedBy=getty.target
DefaultInstance=ttyl
फ़ाइल को सहेजें और
[email protected]:/opt/repository$ systemctl start gitd
==== AUTHENTICATING FOR org.freedesktop.systemd1.manage-units ===
Authentication is required to start 'gitd.service'.
Authenticating as: vagrant,,, (vagrant)
Password:
==== AUTHENTICATION COMPLETE ===
To check if the service is running $ ps -ef | grep git and you will get:
[email protected]:/opt/repository$ ps -ef | grep git
root 1726 1 0 07:48 ? 00:00:00 /usr/bin/git daemon --reuseaddr --base-path=/opt/ --export-all --enable=receive-pack
root 1728 1726 0 07:48 ? 00:00:00 git-daemon --reuseaddr --base-path=/opt/ --export-all --enable=receive-pack
vagrant 1731 1700 0 07:48 pts/0 00:00:00 grep --color=auto git
अब यदि हम रूट डायरेक्टरी में $ git clone git://198.168.1.100/repository (अपने मशीन के नेटवर्क IP के साथ IP पता बदलना याद रखें) चलाते हैं, तो आपको एक नया बनाया गया रिपॉजिटरी फ़ोल्डर मिलेगा . कॉन्फिग फाइल में ईमेल और पासवर्ड को अनकमेंट करके अपने क्रेडेंशियल्स को कॉन्फ़िगर करना याद रखें। इस फ़ाइल तक पहुँचने के लिए $ git config --global --edit चलाएँ।
यह रिपॉजिटरी सभी मेनिफेस्ट और वेरिएबल के लिए हमारे केंद्रीय सर्वर के रूप में कार्य करेगी।
पर्यावरण की स्थापना
अब हमें उस परिवेश को स्थापित करने की आवश्यकता है जिससे हम नोड्स को कॉन्फ़िगर करेंगे। सबसे पहले, योनि निर्देशिका में स्विच करें और उस रिपॉजिटरी को क्लोन करें जिसे हमने अभी ऊपर के समान कमांड के साथ बनाया है।
आवारा फ़ोल्डर में $rm -r मेनिफ़ेस्ट/ चलाकर मेनिफ़ेस्ट निर्देशिका को हटा दें।
$ mkdir प्रोडक्शन के साथ एक नया प्रोडक्शन फोल्डर बनाएं और उसी रिपॉजिटरी को क्लोन करें जिसे हमने $ git क्लोन git://198.168.1.100/repository के साथ बनाया था। (अंत में दिए गए बिंदु को न भूलें)
cp -pr /etc/puppetlabs/code/environments/production/* जारी करके इस प्रोडक्शन फोल्डर में कठपुतली लैब्स प्रोडक्शन एनवायरनमेंट की सामग्री को कॉपी और पेस्ट करें। आपकी उत्पादन निर्देशिका अब इस तरह दिखनी चाहिए
[email protected]:/vagrant/production$ ls -l
total 8
drwxr-xr-x 1 vagrant vagrant 64 Apr 26 18:50 data
-rw-r--r-- 1 vagrant vagrant 865 Apr 26 18:50 environment.conf
-rw-r--r-- 1 vagrant vagrant 518 Apr 26 18:50 hiera.yaml
drwxr-xr-x 1 vagrant vagrant 96 Jul 2 10:45 manifests
drwxr-xr-x 1 vagrant vagrant 64 Apr 26 18:50 modules
-rw-r--r-- 1 vagrant vagrant 0 Jul 1 16:13 test.pp
हमें इन परिवर्तनों को रूट रिपॉजिटरी में धकेलना होगा ताकि हम चल सकें
$ git add * && git commit -m "adding production default files" && git push
यह जांचने के लिए कि क्या git कॉन्फ़िगरेशन काम कर रहा है, हम इस निर्देशिका में $ sudo rm -r * चलाकर निर्देशिका /etc/puppetlabs/code/environments/production/ में सामग्री को हटा सकते हैं और फिर खींच सकते हैं मास्टर रिपॉजिटरी से रूट यूजर यानी $ git क्लोन git://198.168.1.100/repository के रूप में फाइलें। (अंत में बिंदु को मत भूलना)। इस मामले में केवल सामग्री वाली निर्देशिकाएं खींची जाती हैं ताकि आप मेनिफेस्ट और मॉड्यूल फ़ोल्डरों को याद कर सकें। ये ऑपरेशन मास्टर कठपुतली या क्लाइंट मशीन से जुड़ी सभी मशीनों में किए जा सकते हैं। तो हमारे कार्य मुख्य सर्वर से परिवर्तनों को खींचेंगे और मेनिफेस्ट का उपयोग करके परिवर्तनों को लागू करेंगे।
निष्पादन मेनिफेस्ट
यह वह स्क्रिप्ट है जिसे हम परिवर्तनों को खींचने और उन्हें अपने अन्य नोड्स पर स्वचालित रूप से लागू करने में हमारी सहायता के लिए लिखने जा रहे हैं। आपको न केवल उत्पादन परिवेश का उपयोग करना होगा, आप जितना संभव हो उतने वातावरण जोड़ सकते हैं, फिर कठपुतली को निर्देशित कर सकते हैं कि किसको खोजना है। मूल उत्पादन/प्रकट निर्देशिका में हम कठपुतली_exec.pp के रूप में निष्पादन मैनिफ़ेस्ट बनाएंगे और इसे निम्न सामग्री से भरेंगे
file { "This script will be pulling and applying the puppet manifests":
path => '/usr/local/bin/exec-puppet',
content => 'cd /etc/puppetlabs/code/environments/production/ && git pull; /opt/puppetlabs/bin/puppet apply manifests/'
mode => "0755"
}
cron {'exec-puppet':
command => '/usr/local/bin/exec-puppet',
hour => '*',
minute => '*/15'
}
फ़ाइल एक संसाधन है जिसे कठपुतली मैनिफ़ेस्ट को निष्पादित करने के लिए वर्णित किया गया है। हमारे द्वारा बनाई जा रही फ़ाइल के लिए एक उपयुक्त पथ जोड़ें और इसे निष्पादित होने पर जारी किए जाने वाले आदेशों के साथ पॉप्युलेट करें।
आदेशों को व्यवस्थित रूप से निष्पादित किया जाता है, अर्थात, हम पहले उत्पादन वातावरण में नेविगेट करते हैं, भंडार परिवर्तनों को खींचते हैं और फिर उन्हें मशीन पर लागू करते हैं।
हम प्रत्येक नोड को मैनिफेस्ट निर्देशिका की आपूर्ति करते हैं जिससे वह आवेदन के लिए निर्देशित मैनिफेस्ट का चयन कर सकता है।
एक अवधि जिस पर निष्पादन फ़ाइल को चलाया जाना है, वह भी निर्धारित है। इस मामले में हर घंटे के लिए, फ़ाइल को 4 बार निष्पादित करें।
इसे हमारी वर्तमान मशीन पर लागू करने के लिए $cd /vagrant/production. $ git add * फिर $ git commit -m "क्रॉन कॉन्फ़िगरेशन जोड़ें" और अंत में $ git पुश चलाकर सब कुछ git में जोड़ें। अब $ cd /etc/puppetlabs/code/environments/production/ और $ sudo git pull
पर नेविगेट करें।अब यदि हम इस निर्देशिका में मेनिफेस्ट फ़ोल्डर की जांच करते हैं, तो आपको कठपुतली_exec.pp बनाई गई दिखाई देनी चाहिए जैसा कि हमने अभी परिभाषित किया था।
अब अगर हम $ sudo कठपुतली चलाते हैं तो मैनिफेस्ट लागू करें/ और जांचें कि क्या फ़ाइलें exec-puppet बनाई गई हैं $ cat /usr/local/bin/exec-puppet
इस फ़ाइल की सामग्री होनी चाहिए
cd /etc/puppetlabs/code/environments/production/ && git pull; /opt/puppetlabs/bin/puppet apply manifests/
इस बिंदु पर हमने देखा है कि हम अपने मास्टर मशीन में परिवर्तन कैसे खींच सकते हैं और धक्का दे सकते हैं जिसे अन्य सभी नोड्स पर लागू किया जाना चाहिए। यदि हम $ sudo crontab -l चलाते हैं, तो बनाई गई निष्पादन-कठपुतली फ़ाइल पर कुछ महत्वपूर्ण चेतावनियाँ हाइलाइट की जाती हैं।
# HEADER: This file was autogenerated at 2019-07-02 11:50:56 +0000 by puppet.
# HEADER: While it can still be managed manually, it is definitely not recommended.
# HEADER: Note particularly that the comments starting with 'Puppet Name' should
# HEADER: not be deleted, as doing so could cause duplicate cron jobs.
# Puppet Name: exec-puppet
*/15 * * * * /usr/local/bin/exec-puppet
मशीनों को कॉन्फ़िगर करना
मान लें कि हमारी आवारा फ़ाइल इस तरह दिखती है
Vagrant.configure("2") do |config|
config.vm.define "puppet" do |puppet|
puppet.vm.box = "bento/ubuntu-16.04"
#puppet.vm.hostname = "puppet"
#puppet.vm.network "private_network", ip: "192.168.1.10"
end
config.vm.define "db" do |db|
db.vm.box = "bento/ubuntu-16.04"
end
end
इस मामले में हमारे पास कठपुतली मशीन है जहां हम अपने कॉन्फ़िगरेशन और फिर डीबी मशीन कर रहे हैं। अब हम मशीन को इस तरह स्वचालित करते हैं कि जब भी डीबी मशीन शुरू होती है, तो उसमें पहले से ही कठपुतली स्थापित होती है और क्रॉन फ़ाइल पहले से ही मैनिफेस्ट को खींचने और तदनुसार लागू करने के लिए उपलब्ध होती है। आपको डीबी मशीन की सामग्री को निम्नानुसार पुनर्गठित करने की आवश्यकता होगी
config.vm.define "db" do |db|
db.vm.box = "bento/ubuntu-16.04"
vm.provision "shell", inline: <<-SHELL
cd /temp
wget https://apt.puppetlabs.com/puppet5-release-xenial.deb
dpkg -i puppet5-release-xenial.deb
apt-get update
apt-get install -y puppet-agent
apt-get install -y git
rm -rf /etc/puppetlabs/code/environments/production/*
cd /etc/puppetlabs/code/environments/production/
git clone git://198.168.1.100/repository .
/opt/puppetlabs/bin/puppet apply /etc/puppetlabs/code/environments/production/manifests/puppet_exec.pp
SHELL
End
इस स्तर तक, आपकी कठपुतली निर्देशिका की संरचना कुछ इस तरह होनी चाहिए
यदि अब आप $vagrant up db कमांड के साथ db मशीन चलाते हैं, तो कुछ संसाधन स्थापित हो जाएंगे और स्क्रिप्ट जिसे हमने अभी परिभाषित किया है उसे उत्पादन/प्रकट निर्देशिका में पाया जा सकता है। हालांकि, कठपुतली मास्टर का उपयोग करने की सलाह दी जाती है जो मुफ्त संस्करण के लिए केवल 10 नोड्स के लिए विवश है अन्यथा आपको एक योजना की सदस्यता लेने की आवश्यकता होगी। कठपुतली मास्टर अधिक सुविधाएँ प्रदान करता है और कई नोड्स में मैनिफ़ेस्ट वितरित करता है, रिपोर्टिंग लॉग और नोड्स पर अधिक नियंत्रण करता है।
मोंगोडब कठपुतली मॉड्यूल
इस मॉड्यूल का उपयोग MongoDB की स्थापना, mongod सर्वर स्थापना के प्रबंधन, mongod daemon के कॉन्फ़िगरेशन और Ops Manager सेटअप के प्रबंधन के अलावा MongoDB-mms डेमॉन के प्रबंधन में किया जाता है।
निष्कर्ष
अगले ब्लॉग में हम आपको दिखाएंगे कि कठपुतली का उपयोग करके MongoDB प्रतिकृति सेट और शार्ड्स को कैसे परिनियोजित किया जाए।