क्या कॉन्फ़िगरेशन प्रबंधन उपकरण (कठपुतली, बावर्ची) स्थापित पैकेजों को अद्यतित रखने में सक्षम हैं?


28

यह शायद उन लोगों के लिए एक सरल प्रश्न है जो पहले से ही कॉन्फ़िगरेशन प्रबंधन उपकरण चला रहे हैं। क्या कठपुतली या रसोइया जैसे कॉन्फ़िगरेशन प्रबंधन उपकरण स्थापित पैकेजों को अद्यतित रखने का सही तरीका है?

मान लीजिए कि मैं कई सर्वर चलाता हूं, जो ज्यादातर डेबियन और उबंटू पर आधारित है। क्या विन्यास प्रबंधन उपकरण रिपॉजिटरी से स्थापित संकुल को अद्यतन करना आसान बनाते हैं जब सुरक्षा अद्यतन या बग फिक्स साथ आते हैं?

मैं वर्तमान में "अनअटेंडेड अपग्रेड" चलाता हूं , ताकि सिस्टम स्वचालित रूप से सुरक्षा अपडेट स्थापित कर सके, लेकिन मुझे अभी भी सर्वर से कनेक्ट करना है और aptitude update && aptitude safe-upgradeहर बार चलाना है । स्वाभाविक रूप से यह उबाऊ, थकाऊ और त्रुटि-रहित है और अधिक सर्वर हैं।

क्या कठपुतली या बावर्ची जैसे उपकरण स्थापित पैकेजों को अद्यतित रखने का सही तरीका है? आप में से कोई भी इन साधनों का उपयोग मैन्युअल रूप से चलने aptitudeया 15 सर्वरों के बराबर होने से बचने के लिए करता है? मुझे इन प्रश्नों का उत्तर "हां, बिल्कुल!"

लेकिन मैं इस विशेष उपयोग के मामले के बारे में अधिक जानकारी कहां पा सकता हूं? मेरे पास अभी तक कठपुतली या बावर्ची-इन-स्टडी का अध्ययन करने का समय नहीं है, और उदाहरण के लिए रसोई की किताबें या कक्षाएं केवल एक विशेष पैकेज को स्थापित करने के अधिक या कम तुच्छ उदाहरण दिखाती हैं, जैसे कि एसश। क्या आपके पास सिफारिश करने के लिए कोई भी संसाधन हैं, आधिकारिक दस्तावेज के अलावा (मैं निश्चित रूप से, एक बार डॉक्स का अध्ययन करने जा रहा हूं जो मुझे पता है, यदि कोई हो, तो उपकरण मेरे लिए सही हैं)।


अच्छा सवाल है, मैंने कुछ ट्यूटोरियल पढ़ा है [जो मुझे नहीं मिल सकता है] कठपुतली के साथ डेबियन को रखने का उल्लेख है, लेकिन कभी भी खुद की कोशिश नहीं की। उत्पादन में इसका उपयोग करने वालों के उत्तर देखना दिलचस्प होगा
pQd

जवाबों:


9

कठपुतली (मुझे पूरा यकीन है कि महाराज भी) आपके apt-get / yum सॉफ्टवेयर रिपॉजिटरी के साथ संबंध रखते हैं । चूंकि वे समझ पाते हैं कि कौन से पैकेज उपलब्ध हैं, इसका मतलब है कि ensure => latestउबंटू / सेंटोस / डेबियन जैसे काम करता है। जब तक आप उचित फ़ाइलों को सही ढंग से सेट करते हैं ( /etc/apt/sources.list, आदि)।


1
पपेट या ऐसे ही प्रत्येक पैकेज को प्रबंधित करने वाले उत्तर का अर्थ है कि आपको पपेट में प्रत्येक पैकेज को ट्रैक करना होगा, यहां तक ​​कि वे जो मूल लिनक्स वितरण इंस्टॉलेशन का हिस्सा हैं। इस तरह के उपकरणों का उपयोग करना unattended-upgradesया अपडेटyum-cron को स्वचालित करना बहुत कम काम है - बस उन उपकरणों को कॉन्फ़िगर करने के लिए कठपुतली / बावर्ची / Ansible का उपयोग करें।
रिचवेल

22

आप इसे कठपुतली के साथ कर सकते हैं, आप या तो करते हैं:

ensure => latest,

या

ensure=> "1.0.2",

नवीनतम / आवश्यक संस्करण को निर्दिष्ट करने के लिए। अर्थात

package { apache2: ensure => "2.0.12-2" }
package { apache2: ensure => latest }

इसका कम से कम मतलब है कि आप सभी प्रणालियों में एक ही संस्करण निर्दिष्ट कर सकते हैं, साथ ही सर्वर को संभावित रूप से खुद को अपग्रेड करने से रोक सकते हैं। मैंने कई साइटों पर उत्पादन में इस विधि का उपयोग किया है, और यह बहुत अच्छी तरह से काम करता है।

अनअटेंडेड रनिंग अपग्रेड मुझे थोड़ा डराता है, खासकर अगर वे मिशन-क्रिटिकल पैकेज, कर्नेल, mysql लाइब्रेरी, अपाचे इत्यादि को अपग्रेड कर रहे हैं, खासकर अगर स्क्रिप्ट इंस्टॉल करना चाहते हैं तो सर्विस को रिस्टार्ट कर सकते हैं!


उत्तर के लिए धन्यवाद! तो ऐसा लगता है कि जिन पैकेजों को कठपुतली के माध्यम से स्थापित किया गया था, उन्हें कम से कम रखना संभव है। जानकार अच्छा लगा। लेकिन पैकेज के विभिन्न संस्करणों को चलाने वाले सर्वर के बारे में क्या? डेबियन लेन बनाम उबंटू 8.04 और 9.10 में? क्या मुझे मैन्युअल रूप से संस्करणों की देखभाल करनी है? मुझे कुछ और शोध करने हैं, ऐसा लगता है। मुझे यकीन नहीं है कि मैं क्या उम्मीद कर रहा था, शायद Canonical के लैंडस्केप की तर्ज पर कुछ जो एक वेब इंटरफेस और कई सर्वरों पर पैकेज अपडेट करने के लिए अन्य अधिक या कम फैंसी सामान प्रदान करता है।
डेफ

विभिन्न संस्करणों को चलाने वाले सर्वरों के लिए, यह वह जगह है जहाँ यह जटिल हो जाता है। आपको अपने कठपुतली मेनिफेस्ट के भीतर अलग-अलग ब्लॉक रखने की जरूरत है, जहाँ यह lsb_release या debian_version कीवर्ड को / / से पुनः प्राप्त करने के लिए फैक्टर का उपयोग करता है और फिर उस पर आधारित निर्णय लेता है कि किस पैकेज को स्थापित करना है। मैंने देखा नहीं है कि लैंडस्केप उत्पादन सर्वर पर क्रोध में इस्तेमाल किया जाता है, मुझे लगता है कि यह काफी महंगा है।
टॉम ओ'कॉनर

2
ensure => latestहमेशा यह सुनिश्चित करेगा कि आपके भंडार का सेट जो भी प्रदान करता है उसके साथ सब कुछ अप-टू-डेट हो।
वोमबल

18

मुझे लगता है कि यह शायद गलत सवाल है। निश्चित रूप से अपने बुनियादी ढांचे को बनाए रखने के लिए कठपुतली और बावर्ची जैसे विन्यास प्रबंधन उपकरण का उपयोग करना यह सब मैन्युअल रूप से करने की कोशिश से आगे एक बड़ी छलांग है। आपके पैकेज संस्करणों को अद्यतित और सिंक में रखने का मुद्दा ऐसा नहीं है कि इनमें से कोई भी टूल सीधे हल करता है। इसे ठीक से स्वचालित करने के लिए आपको पैकेज रिपॉजिटरी को अपने नियंत्रण में लाने की आवश्यकता है।

जिस तरह से मैं ऐसा करता हूं वह एक समर्पित यम रेपो (रेडहैट / फेडोरा / सेंटोस के लिए; डेबियन / उबंटू के लिए एक एपीटी रिपॉजिटरी) को बनाए रखने के लिए होता है जिसमें एक विशेष साइट के लिए जिन पैकेजों की मुझे परवाह है। ये आम तौर पर स्वयं आवेदन (रूबी, पीएचपी, अपाचे, नेग्नेक्स, पुस्तकालयों और इतने पर) और सुरक्षा-महत्वपूर्ण पैकेजों की निर्भरता होंगे।

एक बार जब आप इसे सेट कर लेते हैं (आमतौर पर आप बस शुरू करने के लिए अपस्ट्रीम रेपो से आवश्यक पैकेज को मिरर कर सकते हैं) तो आप पपेट के "सुनिश्चित करें => नवीनतम" सिंटैक्स का उपयोग कर सकते हैं ताकि यह सुनिश्चित हो सके कि आपकी सभी मशीनें रेपो के साथ अपडेट रहेंगी।

यह एक 'स्टेजिंग' रेपो का उपयोग करने के लिए समझदारी होगी, ताकि आप उन्हें उत्पादन से हटकर तैयार करने से पहले संकुल के अद्यतन संस्करणों का परीक्षण कर सकें। यह आसानी से रिपॉजिटरी टेम्पलेट्स का उपयोग करके कोड के किसी भी दोहराव के बिना कठपुतली के साथ किया जाता है।

अपने पैकेज संस्करण को स्वचालित रूप से स्वचालित रूप से आपको अपने सभी उत्पादन प्रणालियों को सिंक में लाने के लिए प्रोत्साहित करता है, क्योंकि विभिन्न ओएस डिस्ट्रो के लिए कई रिपोज और पैकेज बनाए रखना, संस्करण और मशीन आर्किटेक्चर बहुत समय लेने वाली है और सभी प्रकार की अस्पष्ट समस्याओं और अपूर्णताओं के लिए नेतृत्व करने की संभावना है।

यह सभी सलाह रूबी रत्न, पायथन अंडे और अन्य पैकेज सिस्टम पर समान रूप से लागू होती है जिनका आप उपयोग कर सकते हैं।

मैंने थोड़ा कठपुतली ट्यूटोरियल लिखा है जो आपको कठपुतली के साथ जल्दी उठने और चलने में मदद करना चाहिए। आप नियंत्रण के तहत पैकेज संस्करणों को लाने में पहले चरण के रूप में कठपुतली का उपयोग करके अपनी मशीनों के लिए एक कस्टम रेपो परिभाषा को तैनात कर सकते हैं।


5

इस कार्यक्षमता के लिए Whpp कठपुतली / बावर्ची संभावित दावेदार हैं, उन्हें सिस्टम पर अप-टू-डेट सब कुछ बनाए रखने के लिए या तो कस्टम प्रकार की आवश्यकता होती है या संसाधनों के रूप में हर पैकेज (लिबास 6 जैसे अंतर्निहित सिस्टम लाइब्रेरी सहित) की आवश्यकता होती है ensure => latest। स्वचालित पैकेज अद्यतनों के विशिष्ट मामले के लिए, आप पैकेज पर गौर करना चाहते हैं cron-apt, जो कि आप जैसा चाहते हैं वैसा ही करते हैं।


या सिर्फ "यम अपडेट" witha उच्च splay समय के एक निष्पादन नौकरी धक्का। मेरे लिए किसी भी तरह काम करता है।
16x पर Sirex

5

यह प्रश्न पुराना है, लेकिन मैंने सोचा था कि मैं एक अद्यतित तरीके से उत्तर दूंगा क्योंकि वर्तमान में मौजूदा उत्तर तब अनुपलब्ध था।

यदि आप कठपुतली या रसोइये का उपयोग कर रहे हैं, तो mcollective में देखें। यह कठपुतली लोगों द्वारा एक बहुत अच्छा उपकरण है जो आपको सर्वर के समूहों को कमांड भेजने की अनुमति देता है। http://docs.puppetlabs.com/mcollective/

इसमें एक एप्टीट्यूड प्लगइन भी है, जिसका उपयोग किसी भी सर्वर पर उपयुक्त अपडेट करने के लिए किया जा सकता है: http://projects.puppetlabs.com/projects/mcollective-plugins/wiki/AgentApt


4

मुझे पता है कि यह आपके मूल प्रश्न के लिए थोड़ा देर से है, लेकिन यहां यह "कभी नहीं से बेहतर देर" की भावना में है।

मैं कई सर्वरों पर ऐसा करने के लिए Cfengine 3 का उपयोग करता हूं। मैं स्वत: अद्यतन के लिए संकुल की एक स्पष्ट सूची निर्दिष्ट करता हूँ, इस प्रकार इसके बारे में थोड़ा सावधान हुए बिना सभी संकुल को अद्यतन करने से बचता हूँ । यह बहुत अच्छा काम करता है, और cfengine 3 बहुत हल्का है।

यहाँ एक वादा स्निपेट है मेरे कॉफिन विन्यास से:

    packages:
            "apache2"
                    package_method => "apt",
                    package_policy => "update";

उम्मीद है की यह मदद करेगा।


2

मैं जोनाथन से सहमत हूं। Cfengine 3 का दृष्टिकोण अच्छा है क्योंकि आप पैकेज प्रबंधन के सभी पहलुओं को कम स्तर पर फिर से देखे बिना नियंत्रित कर सकते हैं।


2

हम कठपुतली + apt-dater का उपयोग करते हैं।


1

आप Canonicals लैंडस्केप जैसे पैकेज प्रबंधन टूल का भी उपयोग कर सकते हैं जो उबंटू / डेबियन सिस्टम को प्रबंधित और मॉनिटर करने के लिए डिज़ाइन किया गया है। यह कई प्रणालियों का प्रबंधन करता है, आपको उन्हें एक साथ अपडेट करने की अनुमति देता है और कुछ बुनियादी निगरानी क्षमताएं प्रदान करता है।


0

सुरक्षा अद्यतन

आम तौर पर मुझे लगता है कि उबंटू / डेबियन (या आरएचईएल / सेंटो के लिए) के लिए मजबूत अप्राप्य-अपग्रेड पैकेज को स्थापित करने के लिए इसका उपयोग करना सबसे सरल है yum-cron। आप कठपुतली, रसोइये या अन्य साधनों का उपयोग कर सकते हैं, लेकिन मैं यहां अन्सिबल पर चर्चा करूंगा।

  • unattended-upgrades यदि आप पसंद करते हैं, तो उसी समय गैर-सुरक्षा अद्यतन बनाने के लिए उपयोग किया जा सकता है, जो हर दिन Ansible के माध्यम से कमांड चलाने की तुलना में बहुत आसान है।

  • unattended-upgradesहर दिन ऑटो अपडेट का ध्यान रखता है, और आम तौर पर केवल सुरक्षा अपडेट के लिए विवश होता है (स्थिरता बढ़ाने के लिए)। यदि अपडेट के बाद सर्वर को रिबूट की आवश्यकता होती है, तो यह टूल एक निश्चित समय पर ऑटो रिबूट कर सकता है।

यदि आपके रिबूट अधिक जटिल हैं, unattended upgradesतो आपको ईमेल कर सकते हैं, और यह भी बनाता है /var/run/reboot-required, ताकि Ansible (या समान) उपयुक्त समय पर रिबूट का प्रबंधन कर सके (जैसे कि डाउनटाइम से बचने के लिए वेब या DB सर्वर के एक क्लस्टर के रिबूट को रोल करना, प्रत्येक के लिए प्रतीक्षा करना सर्वर जारी रखने से पहले एक निश्चित टीसीपी पोर्ट पर उपलब्ध हो जाता है)।

आप Ubuntu / Debian सिस्टम के लिए jnv.unattended- अपग्रेड , या सरल लेकिन प्रभावी geerlingguy.security जैसी Ansible भूमिकाओं का उपयोग कर सकते हैं , जिसमें RHEL / CentOS (और SSH कॉन्फिगर को कठोर) भी शामिल है।

यदि तेजी से सुरक्षा अपडेट कम महत्वपूर्ण हैं, तो आप उन्हें पहले कम महत्वपूर्ण सर्वर पर एक परीक्षण प्रक्रिया के माध्यम से रख सकते हैं, और unattended-upgradeकमांड को चला सकते हैं एक बार परीक्षण दिखाने से कोई समस्या नहीं होती है - हालांकि यह सर्वर-उन्मुख सुरक्षा सुधारों के लिए समस्याएँ पैदा करने के लिए काफी दुर्लभ है, मेरे अनुभव।

सामान्य अद्यतन

सुरक्षा के अलावा अन्य अपडेट एक सामान्य निरंतर एकीकरण और परीक्षण प्रक्रिया से गुजरना चाहिए, ताकि यह सुनिश्चित हो सके कि चीजें टूट न जाएं।

मैंने aptitude safe-upgradeअतीत में सर्वर पर गंभीर समस्याएं देखी हैं, इसलिए इसे स्वचालित रूप से नहीं चलाना सबसे अच्छा है, जबकि सुरक्षा अपडेट आमतौर पर काफी सुरक्षित होते हैं।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.