`执行`作为流浪的用户,而不是root,与chef-solo?

`执行`作为流浪的用户,而不是root,与chef-solo?,第1张

概述我正在尝试运行以下主厨命令: # install zombiejs, q (promises), should, coffee-script & mocha execute "install q and zombiejs" do cwd "/home/vagrant" 我正在尝试运行以下主厨命令:
# install zombIEJs,q (promises),should,coffee-script & mocha                 execute "install q and zombIEJs" do                                               cwd "/home/vagrant"                                                             user "vagrant"                                                                  action :run                                                                     command "npm install -g q zombIE should mocha coffee-script"                  end

但它一直失败,因为它无法找到npm:

execute[install q and zombIEJs] (chef-redtail::default line 205) had an error: Errno::ENOENT: No such file or directory – npm install -g q zombIE should mocha coffee-script

通过vagrant ssh登录到vagrant并手动运行命令可以很好地完成.以root身份登录,通过sudo -i并运行命令失败,原因与主厨配方失败相同(npm仅在本地安装为流浪用户,而不是root用户:这就是我想要的).

那么……我怎样才能指定这个厨师执行块作为流浪者用户而不是root用户?

更新:我认为这总结了我的问题:

(ssh) /vagrant git:backbone ❯ whoamivagrant(ssh) /vagrant git:backbone ❯ which npm/home/vagrant/.local/bin/npm(ssh) /vagrant git:backbone ❯ echo $PATH/home/vagrant/.local/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games(ssh) /vagrant git:backbone ❯ sudo -H -u vagrant -i echo $PATH/home/vagrant/.local/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games(ssh) /vagrant git:backbone ❯ sudo -H -u vagrant -i which npmnpm not found

通过http://tickets.opscode.com/browse/CHEF-2517

另一个更新:所以我只是注意到这种差异:

(ssh) /vagrant git:backbone ❯ sudo -H -u vagrant -i echo $PATH/home/vagrant/.local/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games(ssh) /vagrant git:backbone ❯ sudo -H -u vagrant -i exportHOME=/home/vagrantLANG=en_US.UTF-8LC_CTYPE=en_US.UTF-8LOGname=vagrantMAIL=/var/mail/vagrantPATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/gamesSHELL=/bin/zshSSH_AUTH_SOCK=/tmp/ssh-uJUopA4146/agent.4146SUDO_COMMAND='/bin/zsh -c export'SUDO_GID=1001SUDO_UID=1000SUDO_USER=vagrantTERM=xtermUSER=vagrant

注意PATH的区别?导出没有列出/home/vagrant/.local/bin目录…为什么第一个echo会返回PATH,第二个导出返回PATH而没有它?这是问题吗?

解决方法 要以用户身份执行脚本或命令,您需要组合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

由于some bugs,chef没有为执行中的指定用户正确设置环境. narced133的解决方案无效.

总结

以上是内存溢出为你收集整理的`执行`作为流浪的用户,而不是root,与chef-solo?全部内容,希望文章能够帮你解决`执行`作为流浪的用户,而不是root,与chef-solo?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/1045173.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-24
下一篇 2022-05-24

发表评论

登录后才能评论

评论列表(0条)

保存