শেফ বাশ সংস্থান নির্দিষ্ট ব্যবহারকারী হিসাবে কার্যকর করা হচ্ছে না


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

স্তব্ধ থাকুন, আপনি বলছেন যে আপনি কিছু অ-রুট ব্যবহারকারী হিসাবে শেফ-ক্লায়েন্ট পরিচালনা করছেন?
সিজেসি

এটি এমন একটি ব্যবহারকারী যার সুডো অধিকার রয়েছে। এটি নোড বুটস্ট্র্যাপিংয়ের জন্য আমি একই ব্যবহার করেছি।
আর্থার মাল্টসন

তবে আপনি "সুডো শেফ-ক্লায়েন্ট" করছেন, তাই না?
সিজেসি

আপনার সম্ভবত শেফকে মূল হিসাবে চালানো উচিত।
মাইক ফিদলার

শেফ মূল ব্যবহারকারী হিসাবে চলমান।
আর্থার মাল্টসন

উত্তর:


8

সমস্যাটি (সম্ভবত) শেফ ভুল ব্যবহারকারী হিসাবে কমান্ডটি চালাচ্ছেন না, তবে আপনার স্ক্রিপ্টটি চালিত শেলটি লগইন শেল নয়। এর অর্থ হ'ল কিছু পরিবেশের ভেরিয়েবল (হোমের মতো) আপনার প্রত্যাশার মতো সেট করা হবে না এবং এনপিএমকে ভুল জায়গায় ফাইল লেখার চেষ্টা করবে।

সমস্যাটি CHEF-2288 ইস্যুতে আলোচনা করা হয়েছে । এটি বকেয়া থাকার HOME=/home/hubot-userপরেও, এনএমপি চাওয়ার আগে আপনি আপনার কোড ব্লকে যুক্ত করার চেষ্টা করতে পারেন ।


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
মেশিনের প্রথম বুটস্ট্র্যাপে নয়, এটি হয় না। ব্যবহারকারী কেবলমাত্র মেশিনে বিদ্যমান থাকলে এটি কাজ করে।
রাশ ব্র্যাডবেরি

আমি দ্বিতীয়টি করব যে এটি কোনও অ-সমাধান হিসাবে যদি শেফ এছাড়াও ব্যবহারকারীকে প্রশ্নে পরিচালিত করে কারণ কোনও কোডের রেসিপি কার্যকর করার আগে এই কোডটি সংকলন পর্বে কার্যকর করে। এটি প্রায় দ্বিতীয় ধাপে ধাক্কা দেওয়ার জন্য এর চারপাশে আরও বড় হ্যাক রয়েছে তবে ...... 'হোম' => "/ হোম / # {হুবুট_উজার}" করা কাজ করবে যেহেতু এটি কেবল স্ট্রিং হয়ে যাচ্ছে - তবে অবশ্যই অভাব আছে জাদুকরী স্পর্শ.
আগ্রহী

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

কারণ কিছু বাগ , শেফ সঠিকভাবে নির্দিষ্ট ব্যবহারকারীর জন্য পরিবেশ সেট করেনি চালানো

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.