什么决定了客户端上的 Puppet pluginsync 目录结构?

什么决定了客户端上的 Puppet pluginsync 目录结构?

我使用的是 puppet 2.6.8。我已pluginsync=true在 master 和 client 上安装了该版本。我创建了一个模块和一个类型,它们位于 puppetmaster 的以下位置:

 /etc/puppet/modules/mymodule/lib/puppet/type/mytype.rb

同步在客户端上进行,但类型最终出现在客户端上:

 /var/lib/puppet/lib/puppet/type/mytype.rb

但我希望它住在这里:

 /var/lib/puppet/mymodule/lib/puppet/type/mytype.rb

这样它就不会与其他模块的类型发生冲突。

我肯定配置错误了某些东西,但我不知道是什么。

答案1

不,这就是 Puppet 执行插件同步的方式。当我编写插件同步代码时,这种通用理念(“我们不关心它来自模块”)已经存在,所以我只是按照它运行。即使您对文件进行了命名空间,您也不能对本机类型进行命名空间,因此将它们放在单独的目录中对您没有任何好处。保持您的类型名称唯一(可能像我见过的大多数现有插件一样,在它们前面加上模块名称作为前缀),您就不会遇到问题。

答案2

不,这就是它的工作原理。不同模块中的内容不应该发生冲突——分离更多是为了组织,而不是为了隔离。

答案3

还要注意,傀儡大师显然不会在每次代理运行时重新加载你的自定义类型;而是仅在第一次同步它。

我在 puppetlabs 上发现了一个 bug,https://projects.puppetlabs.com/issues/8750检查我的假设等等是否存在错误。

[是的,我宁愿将其作为评论发布,但这需要我没有的声誉——我想我可以省去人们研究这个问题的麻烦,因为文档中没有提到这一点]

相关内容