最适合自定义 Puppet 事实的地方 - RHEL

qui*_*tin 3 ruby puppet facter

我不是一个 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
Run Code Online (Sandbox Code Playgroud)

其中一些目录甚至不存在,坦率地说,我认为自定义事实.rb文件最好放置在 Puppet-ish 位置,例如/etc/puppet/facts或类似位置。

我应该使用现有的加载路径位置之一还是为了 Puppet 的目的创建一个新的?

Zor*_*che 7

最佳实践是将任何事实和其他插件放在 puppet 服务器上的模块中。然后在客户端使用 pluginsync 功能。这让木偶客户端把东西放在适当的位置。

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
Run Code Online (Sandbox Code Playgroud)

所以一个新的事实可能会进入 modules/examplemod/lib/facter/myfact.rb

因为facter-1.7也有可能有外部事实,可以部署/etc/facter/facts.d在任何语言中,也可以用任何语言编写。