कई सर्वरों के लिए सिस्टम अपडेट


11

हमारे पास कई सर्वर हैं और अभी भी उन सभी को अपडेट करना चाहते हैं। वास्तविक तरीका यह है कि किसी भी sysadmins सर्वर से सर्वर पर जाते हैं और बनाते हैं aptitude update && aptitude upgrade- यह अभी भी ठंडा नहीं है।

मैं अब एक ऐसे समाधान की खोज कर रहा हूं जो अभी भी बेहतर और बहुत स्मार्ट है। क्या कठपुतली यह काम कर सकती है? आप इसे कैसे करते हो?


हां, कठपुतली ऐसा कर सकती है। cssh आपकी समस्या को अल्पावधि में भी ठीक कर देगा।
सेरेक्स

जवाबों:


10

आप इस execप्रकार का उपयोग कर सकते हैं :

exec { "upgrade_packages":
    command => "apt-get upgrade -q=2",
    path    => "/usr/local/bin/:/bin/:/usr/bin/",
    # path  => [ "/usr/local/bin/", "/bin/" ],  # alternative syntax
}

ईमानदार होने के लिए, मैंने इसे स्वयं करने की कोशिश नहीं की, लेकिन मुझे लगता है कि आपको बस एक नया मॉड्यूल बनाने की आवश्यकता है जिसमें ऐसी निष्पादन परिभाषा शामिल हो।

apt-get upgradeआदेश इंटरैक्टिव है। इसे चुपचाप चलाने के लिए, आप -q=2ऊपर दिखाए गए अनुसार विकल्प जोड़ सकते हैं ।


बहुत अच्छा लग रहा है! मुझे लगता है कि मैं इसे आजमाने के लिए कुछ टेस्टमेचिन के साथ एक कठपुतली यूसेक बनाऊंगा। बहुत धन्यवाद!
डेनिस विसनिया

3
कठपुतली की सिफारिश के लिए +1! अपने जीवन को एक सीसादमिन के रूप में बदलता है :)
एंटोनी बेनकेमोन

3
ध्यान रहे कि यह निष्पादन हर पपेट रन (हर 30 मिनट) पर चलेगा जो आपके प्रॉक्सी और / या आपके दर्पण को बहुत मुश्किल से काट सकता है यदि आपके पास "बहुत सारे सर्वर" हैं। व्यक्तिगत रूप से, मैं ऊपर दिए गए निष्पादन प्रकार के लिए एक कार्यक्रम लागू करने की सिफारिश करूंगा, यह सुनिश्चित करना कि यह केवल रात में चलता है, उदाहरण के लिए। हालांकि, मेरी राय में, कठपुतली प्रणाली राज्य को लागू करने के लिए है, और इसके माध्यम से मानव निरीक्षण के बिना एक उन्नयन_पैकेज जैसी कमांड चलाना थोड़ा डरावना और थोड़ा कठपुतली का दुरुपयोग है। पपेट एंटरप्राइज (या यह ओपन सोर्स समतुल्य) के साथ आने वाला मोकोलेटिव टूल एक बेहतर विकल्प हो सकता है।
wzzrd

7
हमारे कठपुतली स्थापना में एक समान निष्पादन है जो किसी फ़ाइल पर टाइमस्टैम्प की जांच करता है और केवल नवीनीकरण को चलाता है यदि यह क्लाइंट पर संस्करण की तुलना में नया है। जब हम सब कुछ अपग्रेड करना चाहते हैं, तो हम touchकठपुतली मास्टर पर फ़ाइल करते हैं।
लदादादा

@ वाज़र्ड: अच्छी बात है, लेकिन इसे कुछ बाहरी स्थितियों की जाँच करके बेहतर बनाया जा सकता है जैसा कि लड्डदादा ने कहा।
खालिद

7

यदि आपके सभी होस्ट डेबियन हैं, तो आप अनअटेंडेड-अपग्रेड पैकेज की कोशिश कर सकते हैं।

http://packages.debian.org/sid/unattended-upgrades

यहाँ हम अपने डेबियन वर्चुअल मशीनों को प्रबंधित करने के लिए कठपुतली का उपयोग कर रहे हैं, कठपुतली के साथ हम सभी सर्वरों पर अनावश्यक-अपग्रेड कॉन्फ़िगरेशन को सक्षम और प्रबंधित करने में सक्षम हैं।

हाल ही में हमारी टीम सभी सर्वरों पर कमांड चलाने के लिए एमकलेक्टिव टूल का परीक्षण कर रही है, लेकिन एमकलेक्टिव माणिक कौशल का उपयोग करने की आवश्यकता है।

[एस] गुटो


5

मैं कठपुतली, तथ्य और mCollective के लिए जाने की सलाह दूंगा।

mCollective एक बहुत अच्छा ढांचा है जहां आप फ़िल्टर के रूप में फैक्टर का उपयोग करके मेजबानों की एक श्रृंखला (समानताएं) पर कमांड चला सकते हैं।

इसमें एक स्थानीय प्रॉक्सी / कैश जोड़ें और आप सर्वर प्रबंधन के लिए अच्छी तरह से तैयार होंगे।


मैं मानता हूं, कठपुतली बड़े पैमाने पर / आर्केस्ट्रा पैकेज अपडेट जैसी प्रशासनिक क्रियाओं का प्रबंधन करने के लिए वास्तव में सबसे अच्छा साधन नहीं है।
डकैती

3

एक उपकरण का उपयोग करें जो कई सर्वरों पर एकल कमांड चलाने के लिए बनाया गया है। और इससे मेरा मतलब यह नहीं है कि टर्मिनेटर या क्लस्टरस्टरएच के साथ काज़िल के टर्मिनल खुले हैं, बल्कि एक प्रबंधन सर्वर के लिए एक ही टर्मिनल है, जो नौकरी के लिए उपयुक्त उपकरण चलाता है।

मैं इस संदर्भ में दुर्गंध, नमक या पिघले हुए की सिफारिश करूंगा। यदि आपके पास पहले से कठपुतली है, तो mCollective के लिए जाएं (यह कठपुतली में अच्छी तरह से एकीकृत है)। यदि आप नहीं करते हैं, और आपके पास अपनी मशीनों पर एक पुराना अजगर है, तो आप func का आनंद ले सकते हैं। यदि आप नए में अजगर, नमक की कोशिश करो। ये सभी उपकरण कमांड लाइन पर निर्दिष्ट कमांड को एसिंक्रोनस रूप से चलाते हैं, जो अनुक्रमिक ssh लूप की तुलना में बहुत अधिक मजेदार है या यहां तक ​​कि umpteen टर्मिनेटर विंडो में भी समान कमांड को umpteen सर्वर पर कर रहा है।

आपको नमक जरूर पसंद आएगा ।


2

इसलिए मुझे लगता है कि कई चीजें हैं जो एक अच्छे समाधान में योगदान करती हैं:

  • बैंडविड्थ
  • प्रशासन में आसानी
  • विस्तृत लॉगिंग के मामले में कुछ पेंच।

बैंडविड्थ : मूल रूप से बैंडविड्थ को बचाने के दो विकल्प मेरे दिमाग में आते हैं:

  • एक डेबियन दर्पण स्थापित करना और अपने सभी ग्राहकों को इस दर्पण का उपयोग करने के लिए कॉन्फ़िगर करना, अधिक जानकारी के लिए http://www.debian.org/mirror/ देखें। (मैं यह सुझाऊंगा)
  • एक प्रॉक्सी (apt-cacher, apt -xy या Squid) स्थापित करना और कैश बढ़ाना ताकि आपके सभी ग्राहक इस कैश से लाभ उठा सकें

प्रशासन : मैं की तरह एक समानांतर खोल कॉन्फ़िगर हैं PDSH , PSSH , जीएनयू समानांतर और, सभी ग्राहकों पर आदेश जारी करता है, तो मैं एक उदाहरण मशीन पर पहले से आदेश का परीक्षण किया। तब इसकी बहुत संभावना नहीं है कि यह अन्य सभी पर विफल हो सकता है। वैकल्पिक रूप से आप सभी ग्राहकों पर क्रोन की नौकरी पर विचार कर सकते हैं, लेकिन तब यह स्वचालित रूप से विफल हो सकता है, इसलिए मैं पहला समाधान पसंद करूंगा।

यदि आप उन्नयन के एक साथ होने की चिंता करते हैं तो आप अपनी आज्ञाओं को निर्धारित कर सकते हैं at

लॉगिंग : समानांतर गोले के रूप में आप आउटपुट को पुनर्निर्देशित करने की संभावना रखते हैं, मैं stderr और stdout को संयोजित करता हूं और इसे लॉगफाइल में लिखता हूं।


बैंडविड्थ: डिबेट रिपॉजिटरी के लिए विशिष्ट कैशिंग प्रॉक्सी हैं, एप-कैचर या एप्टी-प्रॉक्सी की तलाश करें।
S19N

महान मैं इसे उत्तर में एकीकृत करूंगा।
गणित

और mCollective जैसे सॉफ्टवेयर समानांतर आदेशों के निष्पादन और आउटपुट / परिणाम की रिपोर्ट करने की अनुमति देगा।
CloudWeavers

1

मेरा अपना समानांतर ssh आवरण: classh विभिन्न समानांतर और क्लस्टर ssh टूल्स का एक विकल्प है।

आप इसे बेहतर पसंद कर सकते हैं या आप इसे नफरत कर सकते हैं। केवल तीन कारण हैं जिनका मैं यहां उल्लेख कर रहा हूं:

  • यह स्थापित करने और उपयोग करने के लिए अत्यंत सरल है: पायथन 2.5 मानक पुस्तकालयों से परे कोई बाहरी निर्भरता वाली एकल .py फ़ाइल।
  • यह अपनी सीमाओं के भीतर बेहद विश्वसनीय है। मैं इसे प्रत्येक कार्य दिवस, अक्सर प्रति दिन लगभग 100 बार और आमतौर पर प्रति कमांड सैकड़ों से कुछ हजार लक्ष्यों के संग्रह पर उपयोग करता हूं। (मैंने एक समय में 25 हजार से अधिक सर्वरों की लक्ष्य सूचियों पर इसका परीक्षण किया है)। यह कभी भी चलाने में विफल रहा है, मुझे पूरा करने या किसी भी अनिश्चित व्यवहार को पूरा करने में विफल रहा है। (केवल पायथॉन subprocess.communicate()विधि से संबंधित सीमाएँ --- ताकि आप केवल 64K के बारे में प्राप्त कर सकते हैं stdout और, अलग से 64K की stderr तक, उदाहरण के लिए; कोई भी दूरस्थ प्रक्रिया जो इसके स्टैडेन से पढ़ने का प्रयास करती है, वह सरल हो जाएगी; जब तक स्थानीय ssh उपवर्ग को मार दिया जाता है, स्वचालित रूप से classh के टाइमआउट हैंडलिंग द्वारा)
  • एक कस्टम स्क्रिप्ट को पायथन में, क्लासहोमो को एक मॉड्यूल के रूप में उपयोग करने के लिए लिखना बेहद सरल है । इसलिए कुछ लिखना बहुत आसान है:

    
        !#/bin/env python
        import classh
        job = classh.SSHJobMan(cmd, targets)
        job.start()
        while not job.done():
            completed = job.poll()
            for i in completed:
                # do something with the classh.JobRecord object referenced by i
        # done

    # You can optionally do post-processing on the dictionary of JobRecords here # keyed off the target strings (hostnames) </code></pre>

यही सब है इसके लिए। उदाहरण के लिए नेस्टेड लूप में आप उन सभी की सूची एकत्र कर सकते हैं जो कुछ विशेष निकास स्थिति लौटाते हैं या विशिष्ट त्रुटि संदेशों के लिए स्कैन करते हैं, और उन लोगों को संभालने के लिए अनुवर्ती नौकरियों की स्थापना करते हैं। (नौकरियां समवर्ती रूप से चलाई जाएंगी, किसी भी समय 100 नौकरियों की डिफ़ॉल्ट, जब तक कि प्रत्येक पूरा न हो जाए; इसलिए कुछ सौ मेजबानों पर एक साधारण कमांड आमतौर पर कुछ ही सेकंड में पूरी होती है और एक लंबी कमांड स्ट्रिंग में बहुत जटिल शेल स्क्रिप्ट होती है। पचास पंक्तियों या तो कहें ... लगभग 10 मिनट में कुछ हजार होस्ट पूरा कर सकते हैं ... मेरे वातावरण में प्रति घंटे लगभग 10K होस्ट करते हैं, जिनमें से कई अंतरमहाद्वीपीय स्थित हैं)।

तो यह कुछ ऐसा हो सकता है जिसे आप एक तदर्थ उपाय के रूप में उपयोग कर सकते हैं जब तक कि आप अपने कठपुतली कॉन्फ़िगरेशन को लागू नहीं करते हैं और अच्छी तरह से परीक्षण करते हैं ... और यह आपके मेजबानों के छोटे तदर्थ सर्वेक्षणों को करने के लिए काफी सौंपना है, यह देखने के लिए कि कौन से आपके मानकों से भटक रहे हैं विभिन्न छोटे तरीके।


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

1

निष्पादन का उपयोग करने वाला उत्तर काफी मददगार है।

हालाँकि apt-get मैन्युअल के अनुसार इसका उपयोग करने के लिए एक अच्छा विचार नहीं है -q = 2 इस तरह से (हालांकि मैंने इसे बिना किसी समस्या के उपयोग किया है)

-q, --quiet
       Quiet; produces output suitable for logging, omitting progress indicators. More q's will produce more quiet up to a maximum of 2. You can also use -q=# to set the
       quiet level, overriding the configuration file. Note that quiet level 2 implies -y, you should never use -qq without a no-action modifier such as -d, --print-uris or
       -s as APT may decided to do something you did not expect. Configuration Item: quiet.

मैंने वर्षों से स्वयं एक स्क्रिप्ट का उपयोग किया है, उपयुक्त तरीके से चल रहा है:

ssh example.org "apt-get update && apt-get -y upgrade && apt-get -y dist-upgrade && apt-get clean"

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


हां, मुझे लगता है कि कुछ सेवकों के लिए यह एक अच्छा तरीका है। लेकिन अगर मुझे कुछ और विकल्प मिलने चाहिए (प्रत्येक सर्वर पर कुछ कॉन्फ़िगरेशन रोलआउट करें, आदि) तो इसका कठपुतली वास्तव में बेहतर तरीका है। मैं इस समय कठपुतली और उसके सुंदर ..
डेनिस विस्निया

मैं असहमत नहीं हूं। लेकिन पोस्टर के बारे में क्या पूछ रहा था इस उद्देश्य के लिए यह ओवरकिल हो सकता है।
aseq

1

वर्षों से मैं apt-dater का उपयोग करके पैकेजों को खुशी से अपग्रेड और इंस्टॉल कर रहा हूं । यह दूरस्थ पैकेज प्रबंधन के लिए हल्का और प्रभावी उपकरण है। यह उपयोग करता है screen, sudoऔर ssh
पैकेज प्रबंधन के लिए apt-dater कॉन्फ़िगरेशन प्रबंधन टूल की तुलना में आसान समाधान हो सकता है।
apt-dater विभिन्न GNU / Linux स्वादों जैसे कि डेबियन और CentOS पर केंद्रीकृत पैकेज प्रबंधन के लिए आसान है।


1

आप फैब्रिक का उपयोग कर सकते हैं । फैब्रिक एक पायथन (2.5-2.7) लाइब्रेरी है और एप्लिकेशन परिनियोजन या सिस्टम प्रशासन कार्यों के लिए SSH के उपयोग को व्यवस्थित करने के लिए कमांड-लाइन टूल है।


0

webmin का उपयोग करें ,,, और इसके webmin क्लस्टर फीचर का उपयोग करें, जिसमें आप सभी सिस्टम को एक वेबमिन कंसोल में जोड़ सकते हैं और उन्हें कोई भी आदेश जारी कर सकते हैं या उन सभी को एक स्थान से नियंत्रित कर सकते हैं।

या

क्लस्टर ssh का उपयोग करें

या

PSSH


हां, मैं वास्तव में बहुत सारी खिड़कियां खोल सकता हूं और इसके समानांतर काम कर सकता हूं। क्लस्टर SSH बहुत अच्छा है, लेकिन मुझे लगता है कि यह काफी स्मार्ट नहीं है।
डेनिस विसनिया

0

एक अन्य समाधान यदि आपके सभी होस्ट डेबियन (या डेरिवेटिव) चल रहे हैं, तो क्रोन-उपयुक्त पैकेज का उपयोग करना है । लेकिन, जैसा कि प्रलेखन के अनुसार सुझाया गया है, थोड़ा ध्यान रखना चाहिए।

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

मेरे द्वारा उपयोग किए जाने वाले विशिष्ट क्रोन-एप कॉन्फ़िगरेशन को एक एक्शन फ़ाइल में संक्षेपित किया गया है: /etc/cron-apt/action.d/5-install

dist-upgrade -y -o APT::Get::Show-Upgraded=true -o Dir::Etc::SourceList=/etc/apt/sources.list.d/security.list -o Dir::Etc::SourceParts="/dev/null"

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

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