【问题标题】:Specify Ruby version for Chef to use指定 Chef 使用的 Ruby 版本
【发布时间】:2012-08-03 08:25:02
【问题描述】:

我是 Chef 和 Ruby 的新手,我只想使用 chef-solo 将一个简单的文本文件从机器 A 复制到机器 B。

我的 default.rb 文件是:

require 'rubygems'
require 'net/scp'

hostname = '142.138.0.147'
username = 'someone'
password = 'someone123'

Net::SCP.start( hostname, username, :password => password ) do|scp|
  puts 'SCP Started!'
  scp.download('/home/someone/file.txt', '.')
end

但在运行时出现此错误:

FATAL: LoadError: no such file to load -- net/scp

这是因为 Chef 使用的是它的嵌入式 Ruby 版本,而不是我安装的那个;如何告诉 Chef 使用哪个 Ruby 版本?

【问题讨论】:

  • 您的系统使用的是 RVM 还是 RBEnv?您是否安装了多个 ruby​​ 包?
  • 您找到解决此问题的方法了吗?请不要忘记将答案标记为正确! :)

标签: ruby chef-infra


【解决方案1】:

我不知道您所说的“嵌入式”是什么意思,但您需要在执行主厨食谱的系统上安装正确的 ruby​​ 版本。

如果你想大致了解如何处理厨师,你可以看看 railscast 关于 chef-solo 的插曲:http://railscasts.com/episodes/339-chef-solo-basics

【讨论】:

  • 我的目录结构是1)Chef-Workplace
  • 我的目录结构是 1)Chef-Workplace 2) hello 3a) config 3b) cookbooks 4b) hello world 5b) recipes; config目录包含两个文件1.config.rb和2.node.json;并在食谱中有一个 default.rb 文件。当我将 default.rb 作为普通 ruby​​ 文件执行时.. 即 $ruby default.rb 它可以正常工作.. 但是当我运行 chef-solo 时会出现错误... 这意味着它正在使用 ruby​​ 附带的.. ieinbult ruby​​ 的厨师
  • Chef 中没有内置红宝石!
  • 嘿,问题是我运行一些命令后它正在工作,它安装了一些东西,不知道是什么。嘿,我对厨师来说绝对是新手,目前正在做厨师独奏......我对 ruby​​ 没有问题......我擅长逻辑,你能给我一些厨师独奏的在线资源吗?谢谢:)
  • @phoet Opscode 现在将 Chef 作为受支持平台的完整堆栈安装程序包分发,其中包括自己的 Ruby。 rubygem 和 apt 包也可用,但全栈包是最好的安装方式。 opscode.com/chef/install
猜你喜欢
  • 2013-12-02
  • 1970-01-01
  • 2015-02-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-08-02
相关资源
最近更新 更多