निर्दिष्ट उपयोगकर्ता के रूप में निष्पादन नहीं कर रहा बावर्ची संसाधन


11

मैं हबॉट स्थापित करने के लिए एक बावर्ची रसोई की किताब लिख रहा हूं । नुस्खा में, मैं निम्नलिखित कार्य करता हूं:

bash "install hubot" do
  user hubot_user
  group hubot_group
  cwd install_dir
  code <<-EOH
    wget https://github.com/downloads/github/hubot/hubot-#{node['hubot']['version']}.tar.gz && \
    tar xzvf hubot-#{node['hubot']['version']}.tar.gz && \
    cd hubot && \
    npm install
  EOH
end

हालाँकि, जब मैं कुकबुक को स्थापित करने वाले सर्वर पर शेफ-क्लाइंट को चलाने की कोशिश करता हूं, तो मुझे उपयोगकर्ता की निर्देशिका को लिखने से इनकार करने की अनुमति मिल रही है जो शेफ-क्लाइंट चलाता है, हबॉट उपयोगकर्ता नहीं। किसी कारण से, npmगलत उपयोगकर्ता के तहत चलने की कोशिश कर रहा है, न कि उपयोगकर्ता को बैश संसाधन में निर्दिष्ट किया गया है।

मैं sudo su - hubot -c "npm install /usr/local/hubot/hubot"मैन्युअल रूप से चलाने में सक्षम हूं , और इसका परिणाम मुझे चाहिए (हब उपयोगकर्ता के रूप में हब स्थापित करता है)। हालाँकि, ऐसा लगता है कि शेफ-क्लाइंट कमांड को हबॉट उपयोगकर्ता के रूप में निष्पादित नहीं कर रहा है। नीचे आपको शेफ-क्लाइंट निष्पादन मिलेगा। पहले ही, आपका बहुत धन्यवाद।

Saving to: `hubot-2.1.0.tar.gz'

     0K ......                                                100%  563K=0.01s

2012-01-23 12:32:55 (563 KB/s) - `hubot-2.1.0.tar.gz' saved [7115/7115]

npm ERR! Could not create /home/<user-chef-client-uses>/.npm/log/1.2.0/package.tgz
npm ERR! Failed creating the tarball.
npm ERR! couldn't pack /tmp/npm-1327339976597/1327339976597-0.13104878342710435/contents/package to /home/<user-chef-client-uses>/.npm/log/1.2.0/package.tgz
npm ERR! error installing hubot@2.1.0 Error: EACCES, permission denied '/home/<user-chef-client-uses>/.npm/log'

...

npm not ok
---- End output of "bash"  "/tmp/chef-script20120123-25024-u9nps2-0" ----
Ran "bash"  "/tmp/chef-script20120123-25024-u9nps2-0" returned 1

रुको, आप कह रहे हैं कि आप कुछ गैर-रूट उपयोगकर्ता के रूप में शेफ-क्लाइंट चला रहे हैं?
cjc

यह एक उपयोगकर्ता है जिसके पास sudo अधिकार हैं। यह वही है जिसे मैंने नोड बूट करने के लिए उपयोग किया था।
आर्थर माल्टसन

लेकिन आप "सुडो शेफ-क्लाइंट" कर रहे हैं, है ना?
cjc

आपको शायद शेफ को रूट के रूप में चलाना चाहिए।
माइक फिडलर

रसोइया जड़ उपयोगकर्ता के रूप में चल रहा है।
आर्थर माल्टसन

जवाबों:


8

समस्या यह है (संभावना है) कि शेफ कमांड को गलत उपयोगकर्ता के रूप में नहीं चला रहा है, लेकिन यह कि आपकी स्क्रिप्ट चलाने वाला शेल एक लॉगिन शेल नहीं है। इसका मतलब यह है कि कुछ पर्यावरण चर (जैसे कि गृह) आपकी अपेक्षा के अनुरूप नहीं होंगे, जिससे एनपीएम गलत जगह पर फाइलें लिखने की कोशिश करेगा।

समस्या CHEF-2288 के मुद्दे पर चर्चा की गई है । जबकि यह बकाया रहता है, आप HOME=/home/hubot-usernpm के आने से पहले अपने कोड ब्लॉक में जोड़ने का प्रयास कर सकते हैं ।


4

CHEF-2288 में एक टिप्पणी से लिया गया :

environment ({ 'HOME' => ::Dir.home('USERNAME'), 'USER' => 'USERNAME' })

मेरे लिए काम किया!

आपके मामले में:

environment ({ 'HOME' => ::Dir.home(hubot_user), 'USER' => hubot_user })


2
यह hubot_userमाना जाता है कि शेफ-क्लाइंट चलाने से पहले ही बनाया जा चुका है। ऐसा इसलिए है क्योंकि Dir.homeकमांड तब चलाया जाता है जब फ़ाइल लोड होती है, न कि जब नुस्खा निष्पादित होता है। एक नई मशीन बनाते समय, यह आपके उपयोगकर्ता निर्माण व्यंजनों को चलाने से पहले सबसे अधिक संभावना होगी और इसके परिणामस्वरूप विफलता होगी।
रस ब्रैडबेरी

पूछे गए प्रश्न के लिए, यह उत्तर पूरी तरह से काम करता है।
देखो

1
मशीन के पहले बूटस्ट्रैप पर नहीं, यह नहीं है। यह केवल तभी काम करता है जब उपयोगकर्ता मशीन पर पहले से मौजूद हो।
रोस ब्रैडबेरी

मैं यह बताता हूं कि यह एक गैर-समाधान है यदि शेफ प्रश्न में उपयोगकर्ता को भी प्रबंधित कर रहा है क्योंकि यह कोड किसी भी नुस्खा निष्पादन से पहले संकलन चरण में निष्पादित होता है। संभवत: इसे दूसरे चरण में धकेलने के लिए इसके चारों ओर बड़े-बड़े हैक हैं, लेकिन ...... 'गृह' => "/ होम / # {hubut_user}" करने से काम चल जाएगा क्योंकि यह केवल स्ट्रिंग पासिंग है - लेकिन निश्चित रूप से इसका अभाव है जादुई स्पर्श।
कीन

1

बाद: /server//a/432916/129232

उपयोगकर्ता के रूप में किसी स्क्रिप्ट या कमांड को निष्पादित करने के लिए, आपको su -l और bash -i को संयोजित करना होगा , उदा:

 execute "npm_install" do
    command "su vagrant -l -c 'cd /shared-with-host/helperScripts/ && bash -i npm install -g q zombie should mocha coffee-script'" 
    action :run
  end

वजह से कुछ कीड़े , महाराज ठीक से निर्दिष्ट उपयोगकर्ता के लिए पर्यावरण निर्धारित नहीं करता है निष्पादित

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