अधिसूचित जब कठपुतली द्वारा नियंत्रित एक फ़ाइल यम द्वारा परिवर्तित होने जा रही है


13

क्या कंसोल पर एक नोटिफिकेशन प्राप्त करना संभव है जब कठपुतली द्वारा नियंत्रित एक फाइल वाला पैकेज उस फ़ाइल को बदलने वाला है? मतलब, यम में यम अपडेट करते समय, क्या कस्टम चेतावनी को इंजेक्ट करना संभव है?

जवाबों:


22

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

प्लगइन सभी नए स्थापित / उन्नत / डाउनग्रेड किए गए पैकेजों की जांच करता है, आपको बताता है कि कौन सी कठपुतली-प्रबंधित फाइलें इसे अधिलेखित कर देगी और ऐसा करने के लिए एक पुष्टिकरण मांगती है।

    [root@camel ~]# yum update pam
    Loaded plugins: puppet, security
    Skipping security plugin, no data
    Setting up Update Process
    Resolving Dependencies
    Skipping security plugin, no data
    --> Running transaction check
    ---> Package pam.i386 0:0.99.6.2-12.el5 set to be updated
    ---> Package pam.x86_64 0:0.99.6.2-12.el5 set to be updated
    --> Finished Dependency Resolution

    Dependencies Resolved

    ===============================================================================================================================================================
     Package                           Arch                                 Version                                       Repository                          Size
    ===============================================================================================================================================================
    Updating:
     pam                               i386                                 0.99.6.2-12.el5                               base                               983 k
     pam                               x86_64                               0.99.6.2-12.el5                               base                               982 k

    Transaction Summary
    ===============================================================================================================================================================
    Install       0 Package(s)
    Upgrade       2 Package(s)

    Total download size: 1.9 M
    Is this ok [y/N]: y
    Downloading Packages:
    (1/2): pam-0.99.6.2-12.el5.x86_64.rpm                                                                                                   | 982 kB     00:00
    (2/2): pam-0.99.6.2-12.el5.i386.rpm                                                                                                     | 983 kB     00:00
    ---------------------------------------------------------------------------------------------------------------------------------------------------------------
    Total                                                                                                                          8.7 MB/s | 1.9 MB     00:00
    Running rpm_check_debug
    Running Transaction Test
    Finished Transaction Test
    Transaction Test Succeeded
    Running Transaction
    Installing pam-0.99.6.2-12.el5.i386 overwrites puppet-managed file /etc/pam.d/system-auth
    Installing pam-0.99.6.2-12.el5.i386 overwrites puppet-managed file /etc/security/access.conf
    Installing pam-0.99.6.2-12.el5.i386 overwrites puppet-managed file /etc/security/limits.conf
    Installing pam-0.99.6.2-12.el5.x86_64 overwrites puppet-managed file /etc/pam.d/system-auth
    Installing pam-0.99.6.2-12.el5.x86_64 overwrites puppet-managed file /etc/security/access.conf
    Installing pam-0.99.6.2-12.el5.x86_64 overwrites puppet-managed file /etc/security/limits.conf
    Is this ok [y/N]: n


    Aborting
    [root@camel ~]# yum update pam
    Loaded plugins: puppet, security
    Skipping security plugin, no data
    Setting up Update Process
    Resolving Dependencies
    Skipping security plugin, no data
    --> Running transaction check
    ---> Package pam.i386 0:0.99.6.2-12.el5 set to be updated
    ---> Package pam.x86_64 0:0.99.6.2-12.el5 set to be updated
    --> Finished Dependency Resolution

    Dependencies Resolved

    ===============================================================================================================================================================
     Package                           Arch                                 Version                                       Repository                          Size
    ===============================================================================================================================================================
    Updating:
     pam                               i386                                 0.99.6.2-12.el5                               base                               983 k
     pam                               x86_64                               0.99.6.2-12.el5                               base                               982 k

    Transaction Summary
    ===============================================================================================================================================================
    Install       0 Package(s)
    Upgrade       2 Package(s)

    Total size: 1.9 M
    Is this ok [y/N]: y
    Downloading Packages:
    Running rpm_check_debug
    Running Transaction Test
    Finished Transaction Test
    Transaction Test Succeeded
    Running Transaction
    Installing pam-0.99.6.2-12.el5.i386 overwrites puppet-managed file /etc/pam.d/system-auth
    Installing pam-0.99.6.2-12.el5.i386 overwrites puppet-managed file /etc/security/access.conf
    Installing pam-0.99.6.2-12.el5.i386 overwrites puppet-managed file /etc/security/limits.conf
    Installing pam-0.99.6.2-12.el5.x86_64 overwrites puppet-managed file /etc/pam.d/system-auth
    Installing pam-0.99.6.2-12.el5.x86_64 overwrites puppet-managed file /etc/security/access.conf
    Installing pam-0.99.6.2-12.el5.x86_64 overwrites puppet-managed file /etc/security/limits.conf
    Is this ok [y/N]: y
      Updating       : pam                                                                                                                                     1/4
      Updating       : pam                                                                                                                                     2/4
      Cleanup        : pam                                                                                                                                     3/4
      Cleanup        : pam                                                                                                                                     4/4

    Updated:
      pam.i386 0:0.99.6.2-12.el5                                                    pam.x86_64 0:0.99.6.2-12.el5

    Complete!

प्लगइन ही मेरे github हैक्स रिपॉजिटरी में पाया जा सकता है


8 नवंबर 2013 अपडेट:

जैसा कि टिप्पणियों में संकेत दिया गया है, मैंने अब इसे यम और पपेट के बीच बातचीत को बेहतर बनाने के लिए एक बड़ी परियोजना में बदल दिया है। आप इसे GitHub पर पा सकते हैं ।


ये बहुत प्यारी है। मुझे यकीन है कि यह जानना चाहता था कि% config (noreplace) सामान को अनदेखा करना, हालाँकि, क्योंकि वे वास्तव में ओवरराइट नहीं होने जा रहे हैं।
Freiheit

हाँ, मुझे लगता है कि जोड़ने की योजना है, और एक पूरी बहुत अधिक। इस सवाल ने मुझे बहुत सारे विचार दिए :)
डेनिस करसेमेकर

वाह ! आप वास्तव में यहां ड्यूटी के आह्वान से परे थे। मैं प्रभावित हु। यह वही है जो मेरे सवाल को संबोधित करने की कोशिश कर रहा था। मैं एक शेल स्क्रिप्ट सोच रहा था लेकिन यह बहुत बेहतर है! अब, मैंने आपका प्लगइन yum में स्थापित किया है, लेकिन यह कठपुतली प्लगइन को लोड नहीं करेगा। कोई विचार क्यों? मैं .pyc फ़ाइल देखता हूं, लेकिन rhnplugin और सुरक्षा जैसी कोई भी .py फ़ाइल नहीं है
ब्रायन

कोई बात नहीं, मुझे PyYAML स्थापित करना पड़ा।
ब्रायन

क्या आप एक सॉफ़्टवेयर लाइसेंस जोड़ सकते हैं?
ब्रायन

2

हां, यह संभव है लेकिन यह कठपुतली से संबंधित नहीं है।

लिनक्स सिस्टम के पास इनॉटिफ़ाइ मेकेनिज्म के लिए समर्थन है जिसका उपयोग "फाइलसिस्टम इवेंट्स पर निगरानी और कार्रवाई करने के लिए किया जा सकता है"। इसके अलावा inotify-toolsएक incronकार्यक्रम भी है जो क्रोन के समान काम करता है लेकिन यह सिस्टम ईवेंट को फाइल करने के लिए प्रतिक्रिया करता है। मुझे लगता है कि आप इसे किसी भी फ़ाइल को बदलने के बारे में सूचित करने के लिए उपयोग कर सकते हैं।

(BTW, यदि आप /etc/sysctl.confफ़ाइल देखना चाहते हैं, तो मैं यह करने से पहले जांचने का सुझाव देता हूं - क्या आपके लिनक्स में /etc/sysctl.dनिर्देशिका के लिए समर्थन है ?)


0

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

हालांकि, सामान्य तौर पर एक फ़ाइल को प्रबंधित करना अच्छा नहीं होता है जिसे पैकेज द्वारा अपडेट किया जाएगा। कॉन्फ़िगरेशन फ़ाइलों के मामले में (rpm -qlc packagename का उपयोग करने के लिए देखें कि क्या वे इस तरह के रूप में चिह्नित हैं), यदि पैकेज में नया संस्करण है तो इसे फ़ाइल नाम के रूप में सहेजा जाता है ।rpmnew। फिर आप किसी भी आवश्यक परिवर्तन को मर्ज करने के लिए अपने उपकरणों पर छोड़ दिए जाते हैं।

हम एक समस्या में चले गए हैं जहां कठपुतली द्वारा एक कॉन्फ़िगर फ़ाइल को हटा दिया गया था और फिर पैकेज को अपडेट किए जाने पर यम द्वारा प्रतिस्थापित किया गया था। जब तक अगले कठपुतली रन ने फ़ाइल को हटा नहीं दिया, तब तक यह समस्या थी। उस स्थिति के लिए हमारा काम यह था कि "हटाए गए" फ़ाइल की सामग्री को एक टिप्पणी पर सेट किया जाए ताकि यह अनिवार्य रूप से खाली हो। इसे संभालने का एक और तरीका यह सुनिश्चित करने का प्रयास होगा कि पैकेज ['a'] -> फ़ाइल [’/ etc / a’] ताकि केवल एक कठपुतली चलाने की आवश्यकता हो।


मैंने कठपुतली पर कुछ सर्वोत्तम प्रथाओं को खोजने की कोशिश की जो कहती है "यह एक फ़ाइल को प्रबंधित करने के लिए अच्छा अभ्यास नहीं है जिसे पैकेज द्वारा अपडेट किया जाएगा"। मैं विशेष रूप से sysctl.conf को प्रबंधित करता हूं क्योंकि उस फ़ाइल में सेटिंग्स हैं जिन्हें चलाने के लिए मुझे कुछ अनुप्रयोगों की आवश्यकता है। फिर विकल्प क्या है?
ब्रायन

1
यह कठपुतली के साथ कॉन्फ़िगर करने के लिए बिल्कुल ठीक है कि यम भी स्पर्श करना चाहता है। RPM आम तौर पर कस्टमाइज्ड कॉन्फिग फाइल्स को टच नहीं करता है, और अगर ऐसा होता है, तो भी कठपुतली आपकी सामग्री को बहाल कर देगी।
डेनिस करसेमेकर

कॉन्फ़िगरेशन फ़ाइलें केवल RPM / yum द्वारा अपडेट की जाएंगी यदि वे मौजूद नहीं हैं। पैकेज में अन्य फ़ाइलों को संपादित करने के लिए कठपुतली का उपयोग करने के लिए यह (आम तौर पर) अच्छा अभ्यास नहीं है, क्योंकि आपके परिवर्तन कार्यक्षमता को तोड़ सकते हैं। मुझे लगता है कि मेरे जवाब में "प्रबंधन" की तुलना में "संपादन" करना बेहतर होगा क्योंकि प्रबंध उचित अनुमतियाँ सुनिश्चित कर सकता है। यदि आप उन फ़ाइलों को संपादित करना चाहते हैं जो फ़ाइलों को कॉन्फ़िगर नहीं कर रहे हैं, तो आपको यह सुनिश्चित करने के लिए कुछ प्रकार के संस्करण लॉकिंग या अपवर्जन को भी लागू करना चाहिए कि पैकेज मांग पर अपडेट किए गए हैं, स्वचालित रूप से नहीं। इस तरह आप पूरी अपडेट प्रक्रिया को नियंत्रित कर सकते हैं।
१।


@ 0A0D: धन्यवाद, यह वह व्यवहार है जिसके बारे में मैं बात कर रहा था। मेरी इच्छा है कि डेनिस कार्सेमाकर की पोस्ट पर टिप्पणी करने के लिए मेरे पास पर्याप्त रेप है - यह एक सुरुचिपूर्ण समाधान की शुरुआत है। इसके अलावा, कॉन्फ़िगरेशन ".d" निर्देशिका (php-coder द्वारा नोट की गई) कठपुतली में लागू करने के लिए बहुत आसान है अगर पैकेज उनका समर्थन करता है।
१।
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.