綜合安裝的 Chef 和 RVM 問題

綜合安裝的 Chef 和 RVM 問題

我正在試圖弄清楚一件事,並希望了解其他人對此的看法。我透過 Awesome 在我的 Ubuntu 伺服器(11.10)上安裝了 Chef綜合安裝。它工作得很好。我能夠運行廚師客戶端並且運行沒有任何問題。

然後我安裝了 RVM 和兩個紅寶石 - 這就是我的問題開始的時候。在我安裝 RVM 系統後立即運行:

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

並安裝了2 個紅寶石(將其中一個紅寶石設置為系統上的默認紅寶石)我無法再運行廚師客戶端- 當以普通用戶身份運行時,我收到“命令未找到” - 我認為RVM 弄亂了一些路徑這就是原因。我想我應該以 root 身份運行它,即:

sudo su -
chef-client

相同的結果。然後我嘗試了 rvmsudo,因為有些人建議這樣做,但這也沒有幫助。然後我給了它最後一次機會 - 我運行它

sudo chef-client

效果很好!我真的很困惑為什麼上面的方法有效,為什麼以 root 身份運行 Chef -client(即 sudo su -; Chef-client)不起作用。我錯過了什麼嗎?我真的很感激所有的提示或解釋,因為我有點迷失了。我想以root 身份將Chef-client 作為守護進程運行,但我無法使用上面的sudo 命令來執行此操作- 我知道我可以使用nopasswd 設定用戶,它可能會起作用,但我真的很想了解什麼是在這裡進行;)

答案1

您似乎遇到了路徑載入問題。

綜合安裝程序將 Chef 安裝到/opt/chef/bin/chef-client,然後符號連結到/usr/bin/chef-client 參考1以便 中的所有使用者都可以使用它$PATH

當你安裝 rvm 的時候,它就會與 $PATH 發生衝突,具體來說,Chef 將使用哪個 ruby​​,因為它是載入目前運行的環境的 ruby執行時。

當使用 執行時sudo su -,您將變更到root的環境,並執行設定使用者環境的所有關聯的 profile/bashrc/bash_profile 載入器。

使用 執行時間sudo,您不會載入整個環境,因此 RVM 不會變更路徑。

您可以查看 shell 差異的影響的另一個測試是執行:

sudo which ruby
sudo su - which ruby

並比較差異。

您可能想看看廚師-客戶食譜一旦執行,將幫助您設定一個服務守護程序來控制/配置您的廚師客戶端服務(我們在所有伺服器上都使用它)。

由於 rvm 是在系統範圍內預設安裝的,因此您可能必須為 root(或您想要執行 Chef 的用戶,但我建議 root)停用它。

相關內容