综合安装厨师和rvm问题

我试图弄清楚一件事情,并希望别人看到这一点。 我通过真棒综合安装在我的Ubuntu服务器(11.10)上安装了厨师。 它工作得很好。 我能够运行厨师客户端,它运行没有任何问题。

然后我安装了RVM和两个ruby – 那就是当我的问题开始时。 直接安装RVM系统后,即运行:

curl -L https://get.rvm.io | sudo bash -s stable 

并安装了2个ruby(设置其中一个ruby作为默认的ruby在系统上),我不能再运行厨师客户端 – 当正常的普通用户运行时,我得到了“命令未find” – 我想RVM弄乱了一些PATH所以这是原因。 我以为我会以root身份运行它,即:

 sudo su - chef-client 

同样的结果。 然后我尝试了rvmsudo,因为它被一些人build议,但是这也没有帮助。 然后,我给了它最后一枪 – 我跑了

 sudo chef-client 

这工作得很好! 我真的很困惑,为什么是上面的工作,为什么运行chef -client作为根(即sudo su – ;厨师客户端)不工作。 我错过了什么吗? 我真的很感激所有的提示或解释,因为我有点失落。 我想运行chef-client作为一个守护进程作为根,我不能这样做与上面的sudo命令 – 我知道我可以设置一个用户与nopasswd,它可能会工作,但我真的很想了解什么是去这里;)

看起来你有一个path加载问题。

omn​​ibus安装程序将Chef安装到/opt/chef/bin/chef-client ,然后将符号链接到/usr/bin/chef-client ref1,以便$PATH所有用户都可以使用它。

当你安装rvm的时候,它会和$ PATH混淆,特别是Chef会使用哪个ruby,因为它在执行的时候加载了当前运行的env的ruby 。

当使用sudo su -运行时,您将切换到root环境,并运行设置用户环境的所有关联profile / bashrc / bash_profile加载程序。

使用sudo运行时,不会加载整个环境,所以RVM不会改变path。

另一个testing你可以看到shell差异的影响是运行:

 sudo which ruby sudo su - which ruby 

并比较差异。

你可能想看一下执行过的chef-client cookbook,它将帮助你build立一个服务守护进程来控制/configuration你的chef-client服务(我们在所有的服务器上都使用这个服务)。

由于rvm是作为系统默认安装的,所以你可能需要禁用root用户(或者你想运行Chef的用户,但是我build议root用户)。