कठपुतली: कॉन्फ़िगरेशन फ़ाइल को संशोधित करने के बाद बल सेवा पुनरारंभ


21

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

विशिष्ट परिदृश्य - मान लीजिए कि नया मूनिन या अपाचे कॉन्फिगर है। कठपुतली ग्राहक इसे पता चलता है, स्थानीय फ़ाइलों को अधिलेखित करता है ... और ... - कैसे सुनिश्चित करें कि सेवा को पुनः आरंभ / पुनः लोड किया जाए?

आपका बहुत बहुत धन्यवाद!

जवाबों:


23

सूचित करने का एक विकल्प सदस्यता है:

file { "/etc/sshd_config":
    source => "....",
}

service { sshd:
    ensure => running,
    subscribe => File["/etc/sshd_config"],
}

अंतर यह है कि संबंध दूसरे छोर से वर्णित है। उदाहरण के लिए, आप अपाचे को /etc/apache/httpd.conf पर सब्सक्राइब कर सकते हैं, लेकिन आप एक व्हाट्सएप फ़ाइल को अपाचे बना देंगे, क्योंकि आपके अपाचे वर्ग को आपके पास मौजूद हर vhost के बारे में पता नहीं होगा।

आवश्यकता से पहले और इससे पहले एक समान दोहरी-समाप्त स्थिति लागू होती है। यह सिर्फ एक मामला है जो विशेष स्थिति में अधिक समझ में आता है।

जैसा कि चाड ने उल्लेख किया है, यदि आप अपनी सेवा शुरू करने के लिए लगातार कठपुतली पाते हैं, तो आपको एक पैटर्न पैरामीटर जोड़ने की आवश्यकता है, जो प्रक्रियाओं की सूची के खिलाफ आवेदन करने के लिए एक रेगीक्स है। डिफ़ॉल्ट रूप से कठपुतली एक स्टॉप करेगी और एक सेवा को फिर से शुरू करेगी। यदि आप "hasrestart => true" जोड़ते हैं, तो यह सेवा को पुनरारंभ करने के लिए "पुनरारंभ" पैरामीटर में निर्दिष्ट कमांड का उपयोग करेगा।


22

ऐसा लगता है कि मुझे कुछ मिला है:

file { "/etc/sshd_config":
    source => "....",
    notify => Service[sshd]
}

service { sshd:
    ensure => running
}

हम देखेंगे कि यह कैसे काम करेगा। वैसे भी इस विषय पर आपके विचारों का स्वागत है।


1
हाँ। आप पुटपेट प्रकार के संदर्भ में "मेटापारमेटर्स" ( reductivelabs.com/trac/puppet/wiki/TypeReference#metaparameters ) के तहत विवरण पा सकते हैं
चाड

1
ओह, और आपके ओएस पर निर्भर करते हुए, आपको सेवा प्रकार के हैस्टैटस, हैरेस्टार्ट और / या पैटर्न मापदंडों के साथ खेलना पड़ सकता है।
चाड हुनियकट कल्ट

2

(मुझे पता है कि यह एक सुपर पुराना प्रश्न है, लेकिन अभी मैंने सोचा था कि मैं अपने दो सेंट में एक के साथ (मेरी राय में) इसे करने के लिए बहुत आसान तरीका होगा)

तीर संकेतन का उपयोग करने के लिए स्वतंत्र महसूस करें:

file { "/etc/sshd_config":
  source => "....",
} ~>
service { sshd:
  ensure => running
}

या

File['/etc/sshd_config'] ~> Service['sshd']

यदि आप तीर का उपयोग करते हैं तो अपने पहले उदाहरण में आपको सूचित विकल्प की जरूरत नहीं है
c4f4t0r

उफ़। मैंने सिर्फ नकल की और उसे निकालना भूल गया।
एथन ब्रोवर

1

यह सोलारिस 10 के लिए काम करता है :)

class sun_cron_root {
    file { "/var/spool/cron/crontabs/root" :
            source => "puppet:///files/cron/sun/sun_cron_root"
            }

    service {
            "cron":
            provider => "smf",
            ensure => running,
            enable => true,
            hasrestart => true,
            subscribe => File["/var/spool/cron/crontabs/root"]
            }

}

0

कई बराबर संकेतन हैं:

सूचित करें :

file { '/etc/sshd_config':
    notify => Service[sshd],
}

service { sshd:
    ensure => running
}

सदस्यता लें :

file { '/etc/sshd_config':
   ...
}

service { sshd:
    ensure => running,
    subscribe => File['/etc/sshd_config'],
}

तीर संकेतन :

File['/etc/sshd_config'] ~> Service['sshd']

जंजीरों की घोषणा

file { '/etc/sshd_config':
   ...
}
~> service { sshd:
    ensure => running,
}

यदि आप reloadइसके बजाय ट्रिगर करना चाहते हैं restart, तो सेवा घोषणा को समायोजित करें:

service { sshd:
    ensure => running,
    restart => 'pkill -HUP sshd', # if service support such reload
}
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.