我试图在EC2上使用厨师进行部署。我使用刀ec2来使用Ubuntu 12.04和LAMP堆栈来引导t1.micro。当厨师根据其角色尝试安装软件包时,我收到以下错误。
Recipe Compile Error in /var/chef/cache/cookbooks/mysql/libraries/provider_mysql_service_rhel.rb
================================================================================
NoMethodError
-------------
undefined method `require_relative' for main:Object
Cookbook Trace:
---------------
/var/chef/cache/cookbooks/mysql/libraries/provider_mysql_service_rhel.rb:3
显然,这是因为在bootstrap期间EC2上的ruby版本是1.8.7并且它没有上述方法。我在网上尝试了几十页将其升级到1.9.3或更高,但问题仍然存在于几个方面。当我做sudo rubo -v时,我看到了旧的ruby版本,但是当我做ruby -v时,我看到了最新版本。即使我在EC2上以root身份登录后执行sudo,问题也是一样的。在尝试使用Chef安装时,是否有任何人遇到此问题?任何指向安装ruby的指针,我将能够在sudo之后看到udpate版本将会有所帮助。我不假思索地花了一整天时间试图找出正确的解决方案。
答案 0 :(得分:2)
请不要按照评论中的建议使用RVM。 不是安装Chef的首选方式。安装Chef的首选方法是使用Omnibus安装程序:
curl -L https://www.opscode.com/chef/install.sh | bash
这将自动为您安装Chef,嵌入式Ruby以及所有Chef的依赖项。
参考: