Chef bash kaynağı belirtilen kullanıcı olarak yürütülmüyor


11

Hubot'u kurmak için bir Şef yemek kitabı yazıyorum . Tarifte aşağıdakileri yaparım:

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

Ancak, yemek kitabını yükleyen sunucuda şef-istemci çalıştırmaya çalıştığımda, hubot kullanıcısı değil, şef-istemci çalıştıran kullanıcının dizinine yazma izni reddediyorum. Nedense, npmbash kaynağında belirtilen kullanıcı değil, yanlış kullanıcı altında çalışmaya çalışıyor.

sudo su - hubot -c "npm install /usr/local/hubot/hubot"Manuel olarak çalıştırabiliyorum ve bu istediğim sonucu alıyor (hubot kullanıcısı olarak hubot'u yükler). Ancak, şef-istemci hubot kullanıcısı olarak komutu yerine getirmiyor gibi görünüyor. Aşağıda şef-müşteri uygulamasını bulacaksınız. Şimdiden teşekkür ederim.

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

Bekle, kök kullanıcı olmayan bir kullanıcı olarak şef-istemci çalıştırdığını mı söylüyorsun?
cjc

Sudo hakları olan bir kullanıcı. Düğümü önyüklemek için kullandığımla aynı.
Arthur Maltson

Ama sen "sudo chef-client" yapýyorsun, deđil mi?
cjc

Muhtemelen şefi kök olarak çalıştırıyor olmalısın.
Mike Fiedler

Şef kök kullanıcı olarak çalışıyor.
Arthur Maltson

Yanıtlar:


8

Sorun (büyük olasılıkla) Şefin yanlış kullanıcı olarak çalıştırılması değil, komut dosyanızı çalıştıran kabuğun bir oturum açma kabuğu olmamasıdır. Bu, bazı ortam değişkenlerinin (HOME gibi) beklediğiniz şekilde ayarlanmayacağı ve npm'nin dosyaları yanlış yere yazmaya çalışmasına neden olacağı anlamına gelir.

Sorun CHEF-2288 sayısında tartışılmıştır . Bu olağanüstü HOME=/home/hubot-userkalsa da, npm çağrılmadan önce kod bloğunuza eklemeyi deneyebilirsiniz .


4

CHEF-2288'deki bir yorumdan alınmıştır :

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

Benim için çalıştı!

Senin durumunda:

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


2
Bu hubot_user, şef-istemci çalıştırılmadan önce oluşturulduğunu varsayar . Bunun nedeni, Dir.homekomutun dosya yüklendiğinde çalıştırılmasıdır, reçete yürütüldüğünde değil. Yeni bir makine oluştururken, bu büyük olasılıkla kullanıcı oluşturma tariflerinizden herhangi birinden önce gerçekleşir ve bir hataya neden olur.
Russ Bradberry

Sorulan soru için, bu cevap mükemmel çalışıyor.
look

1
makinenin ilk önyüklemesinde değil, öyle değil. yalnızca kullanıcı makinede zaten mevcutsa çalışır.
Russ Bradberry

İkincisi, şef de söz konusu kullanıcıyı yönetiyorsa, bu kodun derleme aşamasında, herhangi bir tarif yürütülmesinden önce yürütüldüğünden çözüm olmadığına karar vereceğim. muhtemelen ikinci aşamaya itmek için daha büyük kesmek var, ama ...... 'HOME' => "/ home / # {hubut_user}" yapmak sadece ip geçtiği için işe yarayacak - ama tabii ki sihirli dokunuş.
düşkün

1

Sonra: https://serverfault.com/a/432916/129232

Bir komut dosyasını veya komutu kullanıcı olarak yürütmek için su -l ve bash -i'yi birleştirmeniz gerekir , örn:

 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

Bazı hatalar nedeniyle , şef yürütülen belirtilen kullanıcı için ortamı düzgün ayarlamıyor .

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.