无法以root身份运行Chef

时间:2015-10-26 14:06:59

标签: linux chef

我最近在经过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时失败。

2 个答案:

答案 0 :(得分:1)

好吧rvm reset毕竟是有效的。

所以&#34;解决方案&#34;我之前嘲笑的帖子实际上是我正在寻找的解决方案。业。

答案 1 :(得分:0)

不要让GEM安装CHEF。(很多理由太长时间无法解释,但请相信我,使用omnibus包)

这里发生的事情是你的rvm覆盖了路径搜索顺序和ruby调用,因此厨师发射器正在rvm路径中搜索,而不是在嵌入式ruby chef路径中搜索。调用rvm reset可以通过删除覆盖/路径添加来解决问题。

对于&#39;是否成为root&#39;部分,我对你所链接的问题的答案有一个错字。重写后,会忘记,(我希望句子的剩余部分明确需要)。无论如何,谢谢你的抬头。

Chef必须以root运行,但我们强烈建议您远程连接到root机器。

因此,您应该使用sudochef-client权限启动root 100%的时间。如果作为普通用户运行,Chef将在某些操作上失败,因为它旨在管理整个系统。

注意:我说&#39;应该&#39;而不是必须&#39;因为有人可能会找到一个边缘案例,建议在有限的环境中经营厨师,但我认为这是一个边缘案例,在这种情况下,厨师可能不是正确的工具。

相关问题