我不太懂 Ruby,但找到了如何列出 Ruby 加载路径的方法。它对我来说是这样的
$ ruby -e 'puts $:'
/usr/lib/ruby/site_ruby/1.8
/usr/lib64/ruby/site_ruby/1.8
/usr/lib64/ruby/site_ruby/1.8/x86_64-linux
/usr/lib/ruby/site_ruby
/usr/lib64/ruby/site_ruby
/usr/lib64/site_ruby/1.8
/usr/lib64/site_ruby/1.8/x86_64-linux
/usr/lib64/site_ruby
/usr/lib/ruby/1.8
/usr/lib64/ruby/1.8
/usr/lib64/ruby/1.8/x86_64-linux
有些目录甚至不存在,坦率地说,我认为自定义事实.rb文件最好放在类似 Puppet 的位置,例如/etc/puppet/事实或类似的东西。
我应该采用现有的加载路径位置之一还是为了 Puppet 的目的创建一个新的加载路径位置?
答案1
最佳做法是将所有事实和其他插件放在 Puppet 服务器上的模块内。然后在客户端上使用 pluginsync 功能。这允许 Puppet 客户端将内容放在适当的位置。
http://docs.puppetlabs.com/guides/plugins_in_modules.html
{modulepath}
└── {module}
└── lib
|── augeas
│ └── lenses
├── facter
└── puppet
├── parser
│ └── functions
├── provider
| ├── exec
| ├── package
| └── etc... (any resource type)
└── type
因此可能会出现一个新的事实modules/examplemod/lib/facter/myfact.rb
。
因为facter-1.7
还有可能外部事实,可以部署在任何语言中/etc/facter/facts.d
,也可以用任何语言编写。