如何从puppet清单调用puppet提供程序方法?

如何从puppet清单调用puppet提供程序方法?,puppet,Puppet,我正在使用puppet forge中的ibm_installation_manager模块,它有点基本,因为ibm编写installation manager的时候,幂等性做了很多工作。 参考: 因此,它不能很好地满足升级的需要-因此模块不会检测是否需要升级,停止现有进程,进行升级,然后再次启动进程。它只会检测是否需要升级,并尝试安装所需的版本,如果这构成了一个伟大的升级,但它可能会失败,因为正在运行的实例 因此,我需要实现一些“停止进程”的升级前功能 我需要提到的是,在这一点上,我对ruby是

我正在使用puppet forge中的ibm_installation_manager模块,它有点基本,因为ibm编写installation manager的时候,幂等性做了很多工作。 参考:

因此,它不能很好地满足升级的需要-因此模块不会检测是否需要升级,停止现有进程,进行升级,然后再次启动进程。它只会检测是否需要升级,并尝试安装所需的版本,如果这构成了一个伟大的升级,但它可能会失败,因为正在运行的实例

因此,我需要实现一些“停止进程”的升级前功能

我需要提到的是,在这一点上,我对ruby是新手,对puppet也是相当陌生的

模块使用的提供程序(imcl.rb)有一个exists方法。 对于我来说,检测升级是否会发生(如果会发生,则停止实例)的理想方法是让我的puppet manifest能够以某种方式调用exists方法。这可能吗

或者你会如何处理这个问题? 类似imcl.exists的东西(ibm_pkg[“我的imcl_pkg_资源”])

对于我来说,检测升级是否会发生(如果会发生,则停止实例)的理想方法是让我的puppet manifest能够以某种方式调用exists方法。这可能吗

不,这是不可能的,至少没有任何有用的方法。清单描述了如何构建描述机器目标状态的资源目录。在主机/代理设置中,这发生在主机上。然后将目录用作单独步骤的输入,在该步骤中,目录被传输到目标机器并应用于该机器。正是在这第二步中,供应商参与进来


如果您希望目录的内容受目标机器的当前状态的影响,那么Puppet机制就是以事实的形式将所需的状态详细信息传递给目录生成器。添加您自己的事实相对简单。事实上,至少有“外部事实”和“自定义事实”这两个名称。谢谢,我怀疑是这样的。作为一个额外的复杂因素,我们目前正在使用“缓存目录”,这会导致傀儡表现得好像事实没有改变一样。然而,意识到我们的错误(为时已晚),我们将尽快关闭它。考虑一个后续问题,询问如何从任何角度来解决你的问题。给定特定的方法,您可以分叉该模块并修改提供程序代码以实现所需的功能,但可能还有其他有用的方法。