2011-06-08 30 views
33

पर्यावरण परिवर्तक सेट करने के लिए आप शेफ रेसिपी का उपयोग कैसे कर सकते हैं?पर्यावरण चर सेट करने के लिए आप शेफ रेसिपी का उपयोग कैसे कर सकते हैं?

मुझे एक शेफ रेसिपी का उपयोग करके एक पर्यावरण चर सेट करने की आवश्यकता है। क्या आप इसे पूरा करने का एक उदाहरण प्रदान कर सकते हैं?

+2

पर्यावरण चर के लिए संदर्भ क्या है जिसे आप सेट करना चाहते हैं? –

+0

क्या आप अपना प्रश्न बढ़ा सकते हैं? ऐसा लगता है कि इसका उत्तर दिया गया है, जब तक कि आप अधिक जानकारी साझा न करें या हमें कुछ प्रतिक्रिया दें। – Till

उत्तर

26

यदि आपको शेफ प्रक्रिया के भीतर सख्ती से एक env var सेट की आवश्यकता है, तो आप ENV['foo'] = 'bar 'का उपयोग कर सकते हैं क्योंकि यह एक रूबी प्रक्रिया है।

आप एक execute provider के लिए एक स्थापित करने के लिए की जरूरत है, बावर्ची एक वातावरण हैश को उजागर करता है:

execute 'Bootstrap the database' do 
    cwd "#{app_dir}/current" 
    command "#{env_cmd} rake db:drop db:create db:schema:load RAILS_ENV=#{rails_env}" 
    environment 'HOME' => "/home/#{app_user}" 
    user app_user 
    action :run 
    not_if %[psql -U postgres -c "\\l" | grep #{db_name}] 
end 

आप एक लगातार वातावरण चर तो स्थापित करने के लिए देख रहे हैं आप बावर्ची संपादित /etc/profile.d/chef.sh, /etc/environment के लिए चाहते हो सकता है, एक उपयोगकर्ता प्रोफाइल, आदि

+1

क्या आप कृपया बता सकते हैं कि शेफ – Prats

+1

@Prats के माध्यम से स्थायी रूप से पर्यावरण चर सेट करने के लिए कैसे करें - 'magic_shell' cookbook - http://community.opscode.com/cookbooks/magic_shell –

14

यदि आप इसे सिस्टम पर शेफ के साथ सेट करना चाहते हैं, magic_shell cookbook चेकआउट करें।

magic_shell_environment 'RAILS_ENV' do 
    value 'production' 
end 
+1

गुज़लिंग वाले अन्य लोगों के लिए बस एक नोट - magic_shell_environment एक गोचा के साथ शानदार है। एक रूबी स्क्रिप्ट से सिस्टम ("/ new/process/to/call") से जुड़ा कोई भी आदेश /etc/profile.d/* से स्वचालित रूप से – matt

+0

@matt से नहीं खींच सकता है, आप एक इंटरैक्टिव लॉगिन को मजबूर कर सकते हैं और/या रुबी स्क्रिप्ट में '/ etc/profile' सोर्सिंग। – sethvargo

+0

धन्यवाद, @ सेठवर्गो। एक पर्यावरण परिवर्तनीय को अद्यतन करने के लिए, जैसे '$ PATH', मुझे' magic_shell' cookbook का उपयोग कैसे करना चाहिए? –

3

आप /etc/environment में सिस्टम के स्तर पर यह स्थापित करना चाहते हैं, तो आप ऐसा सीधे निम्न उदाहरण प्रति एक अतिरिक्त नुस्खा जोड़े बिना कर सकते हैं (यह जावा के लिए दो env चर कहते हैं):

sys_env_file = Chef::Util::FileEdit.new('/etc/environment') 
{ 
    'JAVA_HOME' => '/usr/lib/jvm/java-1.7.0-openjdk-amd64', 
    'LD_LIBRARY_PATH' => '/usr/lib/jvm/java-1.7.0-openjdk-amd64/lib' 
}.each do |name, val| 
    sys_env_file.insert_line_if_no_match /^#{name}\=/, "#{name}=\"#{val}\"" 
    sys_env_file.write_file 
end