我已经使用官方说明在Ubuntu 12.04上安装了Chef Server,它使用embedded了ruby 1.8.7的“omnibus installer”。
我试图安装刀窗 ,但是当我运行gem install knife-windows我得到这个错误:
ERROR: Error installing knife-windows: gssapi requires Ruby version >= 1.9.1.
我尝试安装RVM和1.9.3,但我得到这个错误,并退还:
/opt/vagrant_ruby/lib/ruby/site_ruby/1.8/rubygems.rb:900:in `report_activate_error': Could not find RubyGem chef (>= 0) (Gem::LoadError) from /opt/vagrant_ruby/lib/ruby/site_ruby/1.8/rubygems.rb:248:in `activate' from /opt/vagrant_ruby/lib/ruby/site_ruby/1.8/rubygems.rb:1276:in `gem' from /opt/vagrant_ruby/bin/knife:18
用Ruby 1.9.x安装Chef server&knife的正确方法是什么?
Chef Server似乎安装在由Vagrant( /opt/vagrant_ruby )创build的虚拟机中。 然而,厨师服务器11 +是build立在Erlang,而不是Ruby。 它随Ruby提供,但不应该直接使用它。 在那里用chef-server-ctl来pipe理厨师服务器。
上面的Vagrant框中的安装可能会将各种Ruby二进制文件放置在默认的$ PATH中,这意味着使用gem install会尝试将knife-windowsgem安装到Vagrant放置的Ruby中。
为了进一步解释,Opscode为Chef和Chef Server提供的软件包包括他们自己的Ruby单独安装。 Opscode是这样做的,因为Chef和Chef Server支持的平台都默认提供了不同(过时)的Ruby版本。
一天到一天,大多数与Chef服务器的交互将通过使用knife (或webui)的API。 knife和插件应该从“工作站”系统使用,如本地笔记本电脑。 如果Chef是安装Ruby的唯一原因,那么使用Chef包中embedded的Ruby,该包应安装在本地系统上。 安装程序可用于大多数主要平台,包括Ubuntu,Windows,OS X和其他。 取决于插件,可能需要各种开发头文件和构build工具(gcc,make等)。
值得一提的是,目前Chef Server的“omnibus”包中的Ruby版本不是1.8.7。 它可以在:
ubuntu@os-9348884648703137:~$ /opt/chef-server/embedded/bin/ruby --version ruby 1.9.3p286 (2012-10-12 revision 37165) [x86_64-linux]
(截至撰写本文时的最新版本)
Chef客户端软件包中使用的Ruby版本通常会更频繁地更新,因为客户端/工作站使用的需求比Chef Server快。 Chef客户端软件包中embedded的Ruby版本是:
% /opt/chef/embedded/bin/ruby --version ruby 1.9.3p286 (2012-10-12 revision 37165) [x86_64-darwin11.2.0]
Opscode计划在下一个版本中更新此版本,因此它可能与为此网站的未来访问者显示的版本不同。 另外请注意,这是来自“本地工作站”安装,而不是厨师服务器。
我会不舒服的使用RVM为厨师服务器1.9.3安装。
我会从Brightbox PPA安装1.9.3(这里是详细的说明 ,但是基本上增加了PPA,用1.9代替了1.8,也就是sudo apt-get install ruby1.9.3 。
一旦1.9.3和相关的RubyGem到位,运行gem install chef就足够了,这样厨师服务器就被安装成一个gem,而不是一个deb包。