Я не очень разбираюсь в 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?
Лучше всего размещать любые факты и другие плагины в модулях на марионеточном сервере. Затем используйте функцию 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
Таким образом, новый факт может войти в modules/examplemod/lib/facter/myfact.rb
.
поскольку facter-1.7
есть также возможность иметь внешние факты, который можно развернуть в /etc/facter/facts.d
и может быть написан на любом языке.