2

如果我错过了一些东西,我真的很抱歉,这已经得到了回答,我已经搜索了这个网站和谷歌,但无论如何都找不到任何东西,这就去。

我正在运行 Ruby 1.8 和 Puppet 2.7。我对这两者都是新手,但在过去的几周里,我和 Puppet 做了很多工作,在没有让我的网站崩溃的情况下触摸木头 :)

我现在想写一些自定义事实。我一直在尝试Puppet 文档站点上的说明。我写了一个 hardware_platform.rb 如下:

# hardware_platform.rb

Facter.add("hardware_platform") do
  setcode do
    Facter::Util::Resolution.exec('/bin/uname -i')
  end
end

我想我应该像这样运行它:

# ruby hardware_platform.rb

但是当我这样做时,我得到了这个错误:

hardware_platform.rb:3: uninitialized constant Facter (NameError)

有谁知道这里可能出了什么问题?在我继续前进之前,我需要克服这个...

谢谢

4

2 回答 2

3

您可能require 'facter'在脚本顶部缺少 a 。还可以通过运行来验证 facter gem 是否已安装gem install facter

于 2012-11-13T17:17:53.860 回答
1

如果您在 puppet 将查找的 ruby​​ lib 目录以外的任何地方测试此代码,则首先设置 RUBYLIB。例如在目录名/path/to/dir下测试,创建lib/ruby/facter/hardware_platform.rb

然后你可以

export RUBYLIB=/path/to/dir/lib/ruby

然后,你可以运行

facter hardware_platform

这应该会给你一个正确的结果。

正如@lucas_clemente 所说,您还需要检查您的系统中是否安装了facter。如果您使用的是 yum,只需检查/安装它,

yum list facter 

如果安装它会产生类似这样的结果,或者如果没有安装它会显示版本存在于你的仓库中:

facter.x86_64        1:1.6.12-2.el5           installed
于 2012-11-13T17:45:15.633 回答