Puppet-4.2:从模块加载插件

Puppet-4.2:从模块加载插件,puppet,Puppet,我有一堆自定义类型和提供程序,它们是针对Puppet 2.7.0编写和测试的。上述类型/提供程序位于一个专用模块中,该模块只包含lib子目录及其下的所有扩展。自定义类型是从同一模块子目录下的另一个模块/类测试的。据我所知,这曾经属于“最佳实践”。现在,使用Puppetserver 2.1.1,至少有两件事发生了变化: 未加载在不同模块中定义的扩展。如果使用自定义类型的类在模块“test”下的清单中声明,并且自定义类型/提供程序在模块“\u ext”下,则我得到错误:未能在资源[]上应用目录:参数

我有一堆自定义类型和提供程序,它们是针对Puppet 2.7.0编写和测试的。上述类型/提供程序位于一个专用模块中,该模块只包含lib子目录及其下的所有扩展。自定义类型是从同一模块子目录下的另一个模块/类测试的。据我所知,这曾经属于“最佳实践”。现在,使用Puppetserver 2.1.1,至少有两件事发生了变化:

未加载在不同模块中定义的扩展。如果使用自定义类型的类在模块“test”下的清单中声明,并且自定义类型/提供程序在模块“\u ext”下,则我得到
错误:未能在资源[]上应用目录:参数名称失败
。这些扩展甚至没有从服务器上下载。只要我将ext/lib符号链接到“test/lib”,它就会工作。符号链接已删除,下一次代理运行时将从缓存中清除所有内容。那么,模块中定义的加载插件的新规则是什么?

我有几个不同类型的提供程序,使用相同的命令行实用程序。最后,我将一些类实例方法分解成一个父类,该父类继承自Puppet::Provider,是“必需的”,并作为“父”参数传递给Puppet::Type.Type(:).Provider函数。require使用相对路径,如require
'puppet/provider/.rb'
中所述,它与puppet 2.7一起工作,但Puppetserver 2.1.1抛出一个异常:

错误:无法从远程服务器检索目录:服务器上的错误400:评估错误:评估资源语句时出错,无法自动加载puppet/type/:无法自动加载puppet/provider/:没有要加载的此类文件--puppet/provider/

因此,在这个场景中包含父类的最佳方式是什么?在服务器和代理上,类的完整路径将不同,因此这几乎不是一个选项

我使用了服务器上的默认设置和最小代理配置。pluginsync在代理上设置为true,但这是默认设置

第一个问题:

模块名以下划线开头并被忽略(不知道为什么)。但是将
\u ext
更改为
ext
会使所有扩展都被下载、缓存等

第二个问题,肮脏的修复:

将绝对路径添加到puppetserver.conf中的ruby加载路径:

ruby-load-path: [/opt/puppetlabs/puppet/lib/ruby/vendor_ruby, /etc/puppetlabs/code/environments/<myenvironment>/modules/ext/lib]
ruby加载路径:[/opt/puppetlabs/puppet/lib/ruby/vendor\u ruby,/etc/puppetlabs/code/environments//modules/ext/lib]
但是,不知道如何让Puppetserver(或者更确切地说,JRuby解释器)查看Ruby文件的每个
lib
子目录

在客户端,一旦“评估”在服务器上完成,一切都会顺利运行。

第一个问题:

模块名以下划线开头并被忽略(不知道为什么)。但是将
\u ext
更改为
ext
会使所有扩展都被下载、缓存等

第二个问题,肮脏的修复:

将绝对路径添加到puppetserver.conf中的ruby加载路径:

ruby-load-path: [/opt/puppetlabs/puppet/lib/ruby/vendor_ruby, /etc/puppetlabs/code/environments/<myenvironment>/modules/ext/lib]
ruby加载路径:[/opt/puppetlabs/puppet/lib/ruby/vendor\u ruby,/etc/puppetlabs/code/environments//modules/ext/lib]
但是,不知道如何让Puppetserver(或者更确切地说,JRuby解释器)查看Ruby文件的每个
lib
子目录

在客户机上,一旦服务器上的“评估”正常运行,一切都会顺利进行