在puppet执行期间运行任意ruby代码?

在puppet执行期间运行任意ruby代码?,puppet,facter,Puppet,Facter,我正在扩展模块,以允许使用。挑战在于mongo改变了其在版本和版本之间启用用户身份验证的机制,因此必须运行不同的代码才能向数据库提供用户身份验证凭据 我最初的想法是创建一个定制facter事实,它基本上捕获了mongod--version的输出,但是facter事实似乎是在执行puppet清单之前加载的。是否有一种方法可以在puppet执行期间在运行时执行任意代码,以便我可以访问mongod--version,并决定使用哪种方法启用用户身份验证 注意:一种方法是让puppet运行单个脚本来创建用

我正在扩展模块,以允许使用。挑战在于mongo改变了其在版本和版本之间启用用户身份验证的机制,因此必须运行不同的代码才能向数据库提供用户身份验证凭据

我最初的想法是创建一个定制facter事实,它基本上捕获了
mongod--version
的输出,但是facter事实似乎是在执行puppet清单之前加载的。是否有一种方法可以在puppet执行期间在运行时执行任意代码,以便我可以访问
mongod--version
,并决定使用哪种方法启用用户身份验证

注意:一种方法是让puppet运行单个脚本来创建用户凭据,并让脚本在运行时检测
mongod--version
。这看起来不像是一种玩偶式的做事方式,但也许我在这一点上做得不对。在puppet/facter中处理动态访问变量需求的最佳方法是什么

问题是,您不能在puppet运行期间动态运行ruby代码(或任何其他代码)。“正确”的方法是在上面的注释中使用
exec
语句动态检查mongodb版本。有关实现的详细信息,请参阅和相关的


如果有人有一个更“木偶”的方法来实现这一点,我很想了解它

只需将Ruby代码放入ERB模板中,并使用
模板(${module\u name}/temp.ERB”)
返回版本字符串