人偶-如果条件根据机器的当前状态

时间:2019-02-19 16:57:28

标签: puppet manifest

我正在尝试编写if子句以根据计算机的当前状态执行某些操作。我了解到,根据puppet的哲学目录,计算机在机器中运行之前会对其进行评估并推送。

为了保持一致性,我想使用puppet而不是使用自定义脚本(如bash)。如果可能的话,我需要在木偶中采取这种行为。

这里是一个示例:人偶代理每小时在计算机上运行一次:

拉回购以查看任何新提交    -在回购中搜索特定单词    -如果找到:触发一些依赖    -如果找不到:触发其他依赖项

我的问题:puppet服务器中已经对'if子句'进行了评估,因此没有任何方法可以根据计算机状态以所需顺序进行依赖。

有什么主意吗?

1 个答案:

答案 0 :(得分:0)

  

我正在尝试编写if子句以根据   机器的当前状态。我根据p的理解   哲学目录在机器运行之前对其进行评估并推送至机器   在机器上。

这不仅是Puppet的哲学,而且根深蒂固于Puppet的实现

  

为了保持一致性,我想使用人偶而不是自定义   脚本(如bash)。我需要这种伪造的行为   可能。

     

这里是一个示例:人偶代理每小时在计算机上运行一次:

     

拉回购以查看任何新提交-搜索特定单词   在仓库中-如果找到:触发一些依赖项-如果找不到:   触发其他依赖项

在一般情况下,这根本不会发生,至少在没有每次运行记录资源失败的情况下也是如此。如果某个资源包含在节点的目录中,那么它可以全部应用,那么它将应用,除非它依赖于另一个失败的资源。可以想象,您可以围绕设置为Exec的{​​{1}}资源构建一些东西,但是随后又回到了脚本。即使在那种情况下,为了支持refreshonly / if风格,而不是else,您肯定也需要实现一个自定义类型来调解两组中的哪一组的选择通知资源。

  

我的问题:人偶服务器中已经对“ If子句”进行了评估,因此   没有任何方法可以按所需顺序进行依赖   根据机器状态。

如果您可以承受降低回购和您要执行的其他任何操作之间的适度延迟(由代理运行间隔决定),那么我建议您使用计划任务(例如,if工作)定期删除存储库,并根据运行前的机器状态确定自定义事实,以确定目录构建器应采用哪种替代方法。您甚至可以通过Puppet管理配置cron作业。

如果这还不够,那么通过计划任务直接或间接完成整个操作可能是您的最佳选择。