2012-11-13 79 views
2

如果我错过了某些东西,并且已经得到解答,我已搜索此网站和Google,但我无法找到任何内容,开始。傀儡自定义事实 - 未初始化的常量Facter(NameError)

我正在运行Ruby 1.8和Puppet 2.7。我对这两种都很陌生,但在过去的几周里我已经和木偶做了相当多的工作,触摸木头而不把我的网站放下:)

我现在想写一些自定义事实。我一直在使用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) 

有人知道这里可能会出现什么问题吗?我需要让过去这之前,我可以继续......

感谢

回答

1

如果您要在puppet将查找的ruby lib目录以外的任何位置测试此代码,请先设置RUBYLIB。 例如下迪尔的名字测试/路径/到/目录,创建的lib /红宝石/ 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 
3

你就错失了一个require 'facter'在脚本的顶部。还要通过运行gem install facter来验证是否安装了外部宝石。

+0

感谢响应。我必须这样做,然后按照以下@iamauser指定的方式导出RUBYLIB =/path/to/dir/lib/ruby​​以使其工作。 – ticktockhouse

+0

这对我来说虽然:) – krisdigitx

相关问题