कठपुतली वास्तव में खुद को मल्टी-मास्टर वातावरण में कैविटीज़ के साथ बहुत अच्छी तरह से उधार देती है। मुख्य एक? कठपुतली के कुछ हिस्सों को केंद्रीकृत किया जाना पसंद है। प्रमाण पत्र प्राधिकरण, इन्वेंट्री और डैशबोर्ड / रिपोर्ट सेवाएं, फ़ाइलबकेटिंग और संग्रहीत कॉन्फ़िगरेशन - ये सभी एक सेटअप में अपने सबसे अच्छे रूप में हैं (या बस आवश्यकता है) जहां उनके लिए बात करने के लिए सिर्फ एक जगह है।
यह काफी काम का है, हालाँकि, मल्टी-मास्टर वातावरण में काम करने वाले उन बहुत सारे पुर्जों को प्राप्त करना है, यदि आप अपनी प्राथमिक साइट को खो देने पर कुछ कार्यक्षमता के अनुग्रहपूर्ण नुकसान के साथ ठीक हैं।
आइए एक मास्टर को नोड रिपोर्टिंग देने के लिए आधार कार्यक्षमता के साथ शुरू करें:
मॉड्यूल और घोषणापत्र
यह भाग सरल है। संस्करण उन्हें नियंत्रित करते हैं। यदि यह एक वितरित संस्करण नियंत्रण प्रणाली है, तो बस सेंट्रलाइज़ और सिंक करें, और फ़ेलओवर साइट में आवश्यकतानुसार अपने पुश / पुल प्रवाह को बदल दें। यदि यह तोड़फोड़ है, तो आप शायद svnsync
अपनी विफल साइट पर रेपो करना चाहते हैं ।
प्रमाणपत्र अधिकार
यहां एक विकल्प केवल मास्टर्स के बीच सर्टिफिकेट अथॉरिटी फाइलों को सिंक करना है, ताकि सभी एक ही रूट सर्टिफिकेट साझा करें और सर्टिफिकेट पर हस्ताक्षर करने में सक्षम हों। इसने मुझे हमेशा "गलत करने" के रूप में मारा है;
- क्या एक मास्टर को वास्तव में अपने स्वयं के प्रमाणित प्रमाण को किसी अन्य मास्टर से आने वाले कनेक्शन के लिए ग्राहक के रूप में प्रस्तुत करना चाहिए?
- क्या वह वस्तु-सूची सेवा, डैशबोर्ड आदि के लिए मज़बूती से काम करेगा?
- आप सड़क के नीचे अतिरिक्त वैध DNS ऑल्ट नाम कैसे जोड़ते हैं?
मैं ईमानदारी से नहीं कह सकता कि मैंने इस विकल्प का पूरी तरह से परीक्षण किया है, क्योंकि यह भयानक लगता है। हालाँकि, ऐसा लगता है कि कठपुतली लैब्स इस विकल्प को प्रोत्साहित करने की कोशिश नहीं कर रहे हैं, यहाँ नोट के अनुसार ।
तो, क्या है कि पत्तियों के लिए एक केंद्रीय सीए मास्टर है। जब सभी ग्राहक और अन्य स्वामी CA प्रमाणपत्र और CRL को कैश करते हैं, तब तक सभी भरोसेमंद रिश्ते काम कर रहे होते हैं, (हालांकि वे CRL को जितनी बार चाहें उतनी बार ताज़ा नहीं करते), लेकिन आप तब तक नए प्रमाण पत्र पर हस्ताक्षर करने में असमर्थ रहेंगे आपको प्राथमिक साइट का बैकअप मिलता है या फ़ेलओवर साइट पर बैकअप से CA मास्टर को पुनर्स्थापित करता है।
आप CA के रूप में कार्य करने के लिए एक मास्टर चुनेंगे, और अन्य सभी स्वामी इसे अक्षम कर देंगे:
[main]
ca_server = puppet-ca.example.com
[master]
ca = false
फिर, आप चाहते हैं कि प्रमाणपत्र से संबंधित सभी ट्रैफ़िक प्राप्त करने के लिए केंद्रीय प्रणाली हो। इसके लिए कुछ विकल्प हैं;
SRV
CA के लिए सभी एजेंट नोड्स को सही स्थान पर इंगित करने के लिए 3.0 में नए रिकॉर्ड समर्थन का उपयोग करें -_x-puppet-ca._tcp.example.com
- सभी एजेंटों के
ca_server
कॉन्फ़िगरेशन विकल्प को सेट करेंpuppet.conf
सीए से संबंधित अनुरोधों के लिए सही मास्टर पर सभी ट्रैफ़िक का प्रॉक्सी करें। उदाहरण के लिए, यदि आप पैसेंजर के माध्यम से अपाचे में अपने सभी स्वामी चला रहे हैं, तो इसे गैर-सीए पर कॉन्फ़िगर करें:
SSLProxyEngine On
# Proxy on to the CA.
ProxyPassMatch ^/([^/]+/certificate.*)$ https://puppet-ca.example.com:8140/$1
# Caveat: /certificate_revocation_list requires authentication by default,
# which will be lost when proxying. You'll want to alter your CA's auth.conf
# to allow those requests from any device; the CRL isn't sensitive.
और, यह करना चाहिए।
इससे पहले कि हम सहायक सेवाओं, एक साइड नोट पर जाएं;
DNS मास्टर प्रमाणपत्र के लिए नाम
मुझे लगता है कि यहीं 3.0 में स्थानांतरित होने का सबसे सम्मोहक कारण है। कहो कि आप "किसी भी ol 'वर्किंग मास्टर पर एक नोड इंगित करना चाहते हैं।
2.7 के तहत, आपको एक सामान्य DNS नाम की आवश्यकता होगी puppet.example.com
, और सभी मास्टर्स को उनके प्रमाणपत्र में इसकी आवश्यकता होगी। इसका मतलब है कि dns_alt_names
उनके कॉन्फ़िगरेशन में सेटिंग , एक मास्टर के रूप में कॉन्फ़िगर किए जाने से पहले उनके द्वारा फिर से जारी किए गए सर्टिफिकेट को फिर से जारी करना, जब आपको फिर से सूची में एक नया डीएनएस नाम जोड़ना होगा (जैसे कि अगर आप कई डीएनएस नाम चाहते थे एजेंट अपनी साइट में स्वामी को पसंद करते हैं) .. बदसूरत।
3.0 के साथ, आप SRV
रिकॉर्ड का उपयोग कर सकते हैं । अपने सभी ग्राहकों को यह दें;
[main]
use_srv_records = true
srv_domain = example.com
फिर, स्वामी के लिए किसी विशेष प्रकार की आवश्यकता नहीं है - बस अपने SRV
आरआर में एक नया रिकॉर्ड जोड़ें _x-puppet._tcp.example.com
और आप सेट कर रहे हैं, यह समूह में एक लाइव मास्टर है। बेहतर अभी तक, आप आसानी से मास्टर चयन तर्क को अधिक परिष्कृत बना सकते हैं; "कोई ओल 'वर्किंग मास्टर, लेकिन अपनी साइट में एक को प्राथमिकता दें" SRV
विभिन्न साइटों के लिए रिकॉर्ड के विभिन्न सेट स्थापित करके ; कोई dns_alt_names
जरूरत नहीं है।
रिपोर्ट / डैशबोर्ड
यह सबसे अच्छा केंद्रीकृत काम करता है, लेकिन यदि आप अपनी प्राथमिक साइट के डाउन होने पर इसके बिना रह सकते हैं, तो कोई बात नहीं। रिपोर्ट डालने के लिए अपने सभी स्वामी को सही जगह से कॉन्फ़िगर करें।
[master]
reports = http
reporturl = https://puppetdash.example.com/reports/upload
..और आप बिल्कुल तैयार हैं। एक रिपोर्ट अपलोड करने में विफलता कॉन्फ़िगरेशन रन के लिए गैर-घातक है; अगर डैशबोर्ड सर्वर का टोस्ट है तो यह खो जाएगा।
तथ्य सूची
आपके डैशबोर्ड में चिपके रहने के लिए एक और अच्छी बात है इन्वेंट्री सर्विस। प्रलेखन में अनुशंसित facts_terminus
सेट के साथ rest
, यह केंद्रीय इन्वेंट्री सेवा के डाउन होने पर कॉन्फ़िगरेशन को वास्तव में तोड़ देगा। यहाँ चाल inventory_service
गैर-केंद्रीय स्वामी पर टर्मिनस का उपयोग करने के लिए है , जो सुशोभित विफलता के लिए अनुमति देता है।
facts_terminus = inventory_service
inventory_server = puppet-ca.example.com
inventory_port = 8140
अपने केंद्रीय इन्वेंट्री सर्वर को ActiveRecord या PuppetDB के माध्यम से इन्वेंट्री डेटा को संग्रहीत करने के लिए सेट करें, और जब भी सेवा उपलब्ध हो, तब तक इसे रखना चाहिए।
इसलिए - यदि आप एक बहुत ही नंगे पांव के विन्यास प्रबंधन वातावरण के लिए नीचे हैं, जहाँ आप CA का उपयोग किसी नए नोड के प्रमाणपत्र पर हस्ताक्षर करने के लिए तब तक नहीं कर सकते, जब तक कि यह बहाल नहीं हो जाता है, तो यह ठीक काम कर सकता है - हालाँकि यह वास्तव में अच्छा होगा यदि इनमें से कुछ घटक वितरित किए जाने के लिए थोड़ा अधिक अनुकूल थे ।