我最近在经过2年的中断后回到了Linux。我试着
learn Chef以自动执行某些应用程序部署。在Chef教程中,它指出运行安装包的命令需要sudo
,这是有道理的。
webserver.rb
package 'httpd'
shell命令
sudo chef-apply webserver.rb
教程摘录:
sudo
是必需的,因为此命令会安装程序包,因此必须以root权限运行。如果您在自己的计算机上以root用户身份运行,则可以从命令中省略sudo
。
我用Google搜索了我遇到的问题并找到了"solution" that didn't work以及SO question that stated you shouldn't run Chef as root。我不确定我是否买了它。
首先,厨师不打算以root身份运行。很多资源都假设它们以root身份运行,并且需要它。如果不以root身份运行,它们将失败。
他还说你应该使用sudo
,这与他之前的陈述相冲突。
使用sudo与测试用户一起运行chef客户端(需要sudoers文件中的条目)
我认为他的意思是说你不应该100%一直以root身份运行Chef。我没有以root身份运行Chef,这似乎与OP试图解决的问题相反。
我得到的错误
/opt/rvm/rubies/ruby-2.1.5/lib/ruby/site_ruby/2.1.0/rubygems/dependency.rb:298:in `to_specs': Could not find 'chef' (>= 0) among 13 total gem(s) (Gem::LoadError)
from /opt/rvm/rubies/ruby-2.1.5/lib/ruby/site_ruby/2.1.0/rubygems/dependency.rb:309:in `to_spec'
from /opt/rvm/rubies/ruby-2.1.5/lib/ruby/site_ruby/2.1.0/rubygems/core_ext/kernel_gem.rb:53:in `gem'
from /opt/rvm/gems/ruby-2.1.5/bin/chef-apply:22:in `<main>'
from /opt/rvm/gems/ruby-2.1.5/bin/ruby_executable_hooks:15:in `eval'
from /opt/rvm/gems/ruby-2.1.5/bin/ruby_executable_hooks:15:in `<main>'
如果教程说您可以以root身份运行Chef,并且root需要执行某些配方,那么我认为Chef应该在某些情况下以root身份运行。
我最大的问题是如何修复此错误并以root身份运行Chef?它可以像任何其他用户一样运行良好,但在尝试sudo
时失败。
答案 0 :(得分:1)
好吧rvm reset
毕竟是有效的。
所以&#34;解决方案&#34;我之前嘲笑的帖子实际上是我正在寻找的解决方案。业。
答案 1 :(得分:0)
不要让GEM安装CHEF。(很多理由太长时间无法解释,但请相信我,使用omnibus包)
这里发生的事情是你的rvm覆盖了路径搜索顺序和ruby调用,因此厨师发射器正在rvm路径中搜索,而不是在嵌入式ruby chef路径中搜索。调用rvm reset
可以通过删除覆盖/路径添加来解决问题。
对于&#39;是否成为root&#39;部分,我对你所链接的问题的答案有一个错字。重写后,不会忘记,(我希望句子的剩余部分明确需要)。无论如何,谢谢你的抬头。
Chef必须以root
运行,但我们强烈建议您远程连接到root
机器。
因此,您应该使用sudo
以chef-client
权限启动root
100%的时间。如果作为普通用户运行,Chef将在某些操作上失败,因为它旨在管理整个系统。
注意:我说&#39;应该&#39;而不是必须&#39;因为有人可能会找到一个边缘案例,建议在有限的环境中经营厨师,但我认为这是一个边缘案例,在这种情况下,厨师可能不是正确的工具。