【发布时间】:2015-02-27 15:54:58
【问题描述】:
我有一个自定义函数,我需要从至少两个不同的 puppet 模块调用(服务器端)。这些调用将在 Puppet DSL 定义的类型中进行,而不是基于 Ruby 的自定义类型和提供程序。
我知道,如果我将定义放在“lib\puppet\parser\functions”目录中的 .rb 文件中,则可以在该模块中访问它。是否可以从其他模块调用该函数,也许在它之前有一些模块限定符?还是我需要使用其他方法?该函数接受两个字符串参数并返回一个哈希值。
我对自定义函数的了解很少见这里:
https://docs.puppetlabs.com/guides/custom_functions.html
https://docs.puppetlabs.com/guides/plugins_in_modules.html
以下博客文章似乎暗示所有模块的所有功能都可以从任何模块访问,但我可能会误解它:
http://www.masterzen.fr/2011/10/29/puppet-extension-points-part-1/
【问题讨论】:
-
只要启用了
pluginsync,您的函数就应该可用于任何其他清单。 -
谢谢。如果您将此作为答案并包含指向 Puppet Labs 文档的链接以澄清这一点,我将接受它作为答案。
-
@ptierno
pluginsync仅与代理相关。它与解析器函数无关。它将将它们同步到代理,但无论如何都可以编译清单,即使pluginsync被禁用(但不要这样做)。 -
@FelixFrank 谢谢。在这种情况下,我也将主节点视为代理节点。 docs.puppetlabs.com/guides/plugins_in_modules.html 几乎声明 pluginsync 应该将自定义函数添加到 master 上正确的
$libdir。可能应该更具体。 -
是的,原来是从 2010 年初开始,从 Puppet 版本 2.6.0 之前开始。我会尝试将其删除,这是不正确且具有误导性的。