Puppet自定义事实 - 未初始化的常量Facter(NameError)

时间:2012-11-13 17:13:25

标签: ruby puppet

如果我错过了什么,我真的很抱歉,这已经得到了解答,我搜索了这个网站和谷歌,但无论如何都找不到任何东西,这里也是。

我正在运行Ruby 1.8和Puppet 2.7。我对两者都很陌生,但在过去的几周里我和Puppet做了大量的工作,触摸木材而没有让我的网站崩溃:)

我现在想写一些自定义事实。我一直在试验Puppet documentation site上的指令。我写了一个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)

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

由于

2 个答案:

答案 0 :(得分:3)

您可能错过了脚本顶部的require 'facter'。还要运行gem install facter验证是否安装了facter gem。

答案 1 :(得分: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