如果我错过了什么,我真的很抱歉,这已经得到了解答,我搜索了这个网站和谷歌,但无论如何都找不到任何东西,这里也是。
我正在运行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)
有谁知道这里可能出现的问题?在我继续前进之前,我需要克服这个问题......
由于
答案 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