फिक्सिंग सेवाओं को / etc / default / कठपुतली के साथ अक्षम किया गया है?


13

मैं कठपुतली का उपयोग कर रहा हूँ (सैद्धांतिक रूप से) स्थापना पर शुरू करने के लिए npcd मिलता है, हालाँकि उबंटू पर, यह सेवा डिफ़ॉल्ट सेटिंग के साथ / etc / default / npcd के RUN = "नहीं" में आती है:

 $ cat /etc/default/npcd 
 # Default settings for the NPCD init script.

 # Should NPCD be started? ("yes" to enable)
 RUN="no"

 # Additional options that are passed to the daemon.
 DAEMON_OPTS="-d -f /etc/pnp4nagios/npcd.cfg"

मुझे लगता है कि कठपुतली विन्यास का यह ब्लॉक चीजों का ध्यान रखेगा:

    service { "npcd":
       enable   => true,
       ensure   => "running",
       require  => Package["pnp4nagios"],
    }   

लेकिन अफसोस, यह नहीं है, और वास्तव में फ़ाइल को / etc / डिफ़ॉल्ट में फिर से लिखना है, मुझे यकीन नहीं है कि क्या करना है। क्या उस सेवा को सक्षम करने का एक सीधा तरीका है जिसे मैं नहीं देख रहा हूं?

रिकॉर्ड के लिए, मैं Ubuntu 12.04.2 और कठपुतली संस्करण 3.1.0 का उपयोग कर रहा हूं।


सिर्फ /etc/default/npcdएक fileसंसाधन के साथ फिर से लिखना क्यों नहीं ? fileपर निर्भर करता है package, और serviceपर निर्भर करता है file। मैं हमेशा फ़ाइलों के संपादन के माध्यम से sedया augeasअगर मैं इससे बच सकता हूँ।
लार्क्स

जवाबों:


12

उस फ़ाइल को अपडेट करना और फिर सेवा को फिर से शुरू करना एकमात्र तरीका है। आप एक नई फ़ाइल को आगे बढ़ा सकते हैं और फिर सेवा को आवश्यक बना सकते हैं; इस तरह से जब सामग्री को अपडेट किया जाता है तो सेवा ठीक से शुरू हो जाएगी।

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

डेबियन और इसके डेरिवेटिव में कुछ सेवाएं हैं जो पैकेज स्थापित होने के बाद ऑटोस्टार्ट नहीं करती हैं जब तक कि यह / etc / default में सक्षम न हो। कष्टप्रद प्रकार का।

संपादित करें: FYI init स्क्रिप्ट वास्तव में उस फ़ाइल से मूल्यों को पढ़ रहा है (बस इसे आमतौर पर सोर्स करता है)।


1
दिलचस्प। मेरे पास बग दर्ज करने का मन है। यदि आप "सक्षम" को "सही" पर सेट करते हैं, तो यह केवल यह समझ में आता है कि यह वास्तव में, स्क्रिप्ट को सक्षम करता है (स्तरों को चलाने के लिए किसी भी विभिन्न सिम्बलिंक के अलावा)।
मैट सिमंस

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

एक परिभाषित प्रकार का उपयोग करें, जिसे "defaulted_service" कहा जाता है, जिसमें एक सेवा संसाधन होता है, और एक निष्पादन संसाधन भी होता है जो ज़रूरत पड़ने पर sed का उपयोग करते हुए फ़ाइल को अपडेट करता है, या एक फ़ाइल संसाधन जो आपके लिए अगस्त का उपयोग करता है।
सेरेक्स

@MattSimmons इन पैकेजों को बनाने वाले लोगों को सिम्बलिंक का उपयोग करना चाहिए और update-rc.dसेवा को सक्षम / अक्षम करने के लिए, नहीं /etc/default- यह सेवाओं को प्रबंधित करने का एक मानक तरीका नहीं है, इसलिए यह कठपुतली के नियंत्रण से बाहर है।
शेन मैडेन

8

इसके नरक के लिए मैंने अपने 12.04 मशीनों पर कुछ मानक डेमॉन की जांच की। आपको फ़ाइल का प्रबंधन करना है, इस समय इस पर कोई रास्ता नहीं है।

snmpd

# snmpd control (yes means start daemon).
SNMPDRUN=yes

collectd

# 0: start collectd on boot, 1: do not start collectd on boot
# default: 0
DISABLE=0

कठपुतली

# Start puppet on boot?
START=yes

mdadm

# START_DAEMON:
#   should mdadm start the MD monitoring daemon during boot?
START_DAEMON=true

haproxy

# Set ENABLED to 1 if you want the init script to start haproxy.
ENABLED=1

6

मुझे लगता है कि यह करने के लिए संभव तरीकों में से एक कठपुतली के साथ अगेती उपकरण का उपयोग कर रहा है, जैसे

augeas { "npcd_default":
  changes => [
    "set /files/etc/default/npcd/Run yes",
  ],
}

विवरण के लिए मैनुअल का संदर्भ लें


0

मैं फ़ाइल को संशोधित करने के लिए sed का उपयोग करता हूं। ऑगेस ओवरकिल की तरह लगता है।

sed -i /etc/default/puppet -e 's/START=no/START=yes/'

यहां से लिया गया आइडिया:

http://www.codelord.net/2010/12/19/using-puppet-to-automatically-configure-new-ec2-instances/

तो, आपके मामले में

sed -i /etc/default/npcd -e 's/RUN="no"/RUN="yes"/'

1
अगर आपको लगता है कि अगेती एक ओवरकिल है, तो कठपुतली भी ओवरकिल नहीं है? :) आपका समाधान भी ठीक है, लेकिन आप यह मानते हैं कि आपके पास फ़ाइल है और इसे लाइन की आवश्यकता है, इसलिए यदि यह नहीं है तो क्या होगा? यह आपको कुछ भी बताए बिना विफल हो जाएगा। मेरा मानना ​​है कि एगेस इतना मजबूत, सुविधाजनक और उद्देश्यपूर्ण है कि यह स्थापित करने के लायक है यदि आप कठपुतली का उपयोग कर रहे हैं
ड्यूकएलियन

मेरा उदाहरण क्लाउड-इनिट के माध्यम से बूटस्ट्रैपिंग कठपुतली से था। मैंने आग्नेयास्त्र को देखा और यदि संभव हो तो तुरंत इसे टालने का फैसला किया। अभी तक मुझे आगम की आवश्यकता नहीं है और न ही मुझे = हां शुरू करने के लिए कठपुतली के अलावा एक और सेवा को बूटस्ट्रैप करने की आवश्यकता है।
dmourati

मैं आपकी बात से वाकई उत्सुक हूं। मैं आपकी बात देख सकता हूँ, लेकिन कठपुतली बनाने और कठपुतली को एकीकृत प्रबंधन के लिए अमूर्त शीर्ष-स्तरीय इंटरफ़ेस प्रदान करने की समान विचारधारा का उपयोग नहीं करता है? तो अगर आपको आगम पसंद नहीं है तो आप कठपुतली की तरह कैसे आते हैं? क्यों नहीं तब ansible?
ड्यूकएलियन

मुझे लगता है कि बेहतर दृष्टिकोण स्टब या टुकड़ा विन्यास फाइल को संपादित कर रहा है जैसे कि Apache conf.d, sysctl.d, sudoers.d, आदि। अन्य कॉन्फिग फाइलों के माध्यम से अपना रास्ता बनाने की कोशिश करना, बस मुझे अपील करना। सरलतम मामले में, जहां .d निर्देशिकाओं के साथ खंडित कॉन्फिग फाइलें मौजूद नहीं होती हैं, सेड / पर्ल / जो भी हो, का उपयोग करें। इस प्रकार अगेती की कोई आवश्यकता नहीं है।
dmourati

0

augeasपपेट में इस प्रकार से करना एक तरीका है (जैसा कि @DukeLion द्वारा सुझाया गया है)।

प्रदाता के साथ augeasprovidersमॉड्यूल का उपयोग करने का एक और तरीका है shellvar:

shellvar { 'npcd_default':
  ensure   => present,
  target   => '/etc/default/npcd',
  variable => 'RUN',
  value    => 'yes',
  comment  => 'We want npcd to run',
}

यह बेहतर है क्योंकि रूबी प्रदाता द्वारा ऑगिया का उपयोग सफाई से किया जाएगा। यह स्वचालित रूप से उद्धरण और टिप्पणी का प्रबंधन भी करेगा।

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