我正在試圖弄清楚一件事,並希望了解其他人對此的看法。我透過 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)停用它。