कठपुतली के साथ / etc / प्रोफाइल में लाइनें जोड़ना?


16

मैं एक वर्तमान जेडीके और टॉमकैट स्थापित करने के लिए कठपुतली का उपयोग करता हूं।

package {
    [ "openjdk-6-jdk", "openjdk-6-doc", "openjdk-6-jre",
      "tomcat6", "tomcat6-admin", "tomcat6-common", "tomcat6-docs", 
      "tomcat6-user" ]:
    ensure => present,
}

अब मैं जोड़ना चाहूंगा

JAVA_HOME="/usr/lib/java"
export JAVA_HOME

करने के लिए /etc/profile, बस इस तरह से बाहर निकलने के लिए। मुझे अभी तक डॉक्स में सीधा जवाब नहीं मिला है। क्या ऐसा करने के लिए एक अनुशंसित तरीका है?

सामान्य तौर पर, मैं कठपुतली को इस फ़ाइल को वहाँ रखने या उस फ़ाइल को संशोधित करने के लिए कैसे कहूँ? मैं केवल एक नोड (स्टैंडअलोन मोड में) के लिए कठपुतली का उपयोग कर रहा हूं ताकि इसे आज़माया जा सके और सर्वर सेटअप का एक लॉग रखा जा सके


1
यदि आप कठपुतली में जा रहे हैं, तो Prebuilt मॉड्यूल के लिए Example42 देखें। वे हमेशा वैसा काम नहीं करते जैसा आप चाहते हैं, लेकिन वे सुसंगत और स्थिर हैं। github.com/example42/puppet-modules
kashani

जवाबों:


26

/etc/profile.d/प्रत्यय के साथ एक फ़ाइल जोड़ें .sh। इसे Red Hat और Debian और डेरिवेटिव में / etc / profile के भाग के रूप में प्रस्तुत किया जाएगा, जो अन्य डिस्ट्रोस पर नहीं कह सकता। सामान्यतया, यदि संभव हो तो, वितरित फ़ाइलों की जगह स्निपेट जोड़ना बेहतर होता है क्योंकि यह भविष्य में अधिक सुरक्षित होता है।

तो कठपुतली में, निम्नलिखित करेंगे:

file { "/etc/profile.d/set_java_home.sh":
    ensure => present,
    source => ...[whatever's appropriate for your setup]...,
    ...
}

यह वह चीज है जिसकी आपको तलाश है या आपको और अधिक विस्तार की आवश्यकता है?


1
यह OpenSUSE और Gentoo पर भी काम करता है।
कामिल किसिल

1
धन्यवाद, यह बहुत अच्छा है। यह लगभग काम कर रहा है, बस एक .ppस्रोत के रूप में एक फ़ाइल के संदर्भ के लिए एक उपयुक्त तरीका खोजने की जरूरत है ।
मिकू

1
कठपुतली को 0.25 या बेहतर स्रोत => कठपुतली: /// $ modulename / $ फ़ाइल को वास्तविक सिस्टम पथ के साथ $ modulename / files / $ file
kashani

2
IIRC 2.6.5 और बाद में अगर आप कठपुतली का उपयोग करते हैं, तो एक deprecation चेतावनी देता है: /// $ modulename / files / $ filename संकेतन। यह कठपुतली की तरह दिखना चाहिए: /// मॉड्यूल / $ modulename / files / $ filename
ztron

42

मार्क का सॉल्यूशन हर किसी की प्रोफाइल में सामान जोड़ने के लिए सबसे अच्छा है, लेकिन अगर आपको कभी भी यह सुनिश्चित करने की आवश्यकता है कि कुछ पंक्तियाँ किसी फ़ाइल में हैं, तो कठपुतली लैब्स के पास एक शानदार मॉड्यूल है, जिसे stdlib कहा जाता है , जिसमें file_line शामिल होता है, जिसे आपकी ज़रूरत होगी। पहले मैंने ऐसा करने के लिए निष्पादन प्रकार में प्रतिध्वनि और grep का उपयोग किया है, लेकिन file_line इतना आसान और क्लीनर है।

यहाँ इसके लिए मदद है:

Ensures that a given line is contained within a file. The implementation
matches the full line, including whitespace at the beginning and end. If
the line is not contained in the given file, Puppet will add the line to
ensure the desired state. Multiple resources may be declared to manage
multiple lines in the same file.

Example:

file_line { 'sudo_rule':
   path => '/etc/sudoers',
   line => '%sudo ALL=(ALL) ALL',
}
file_line { 'sudo_rule_nopw':
   path => '/etc/sudoers',
   line => '%sudonopw ALL=(ALL) NOPASSWD: ALL',
}

In this example, Puppet will ensure both of the specified lines are
contained in the file /etc/sudoers.

2
सुनिश्चित करें कि आपके पास क्लाइंट पर प्लग इन सक्षम है, अन्यथा यह चुपचाप विफल लगता है।
gak

1
यहां प्रत्यक्ष लंगर के साथ डॉक्टर forge.puppetlabs.com/puppetlabs/stdlib#resources
फ्रांसेस्को Casula
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.