清单中有错误时,人偶工作流程可以停止吗?

时间:2019-03-26 05:36:41

标签: puppet

我正在寻找使木偶运行停止的选项,就像在清单中的某些检查中看到失败时一样。

当我在节点上执行人偶代理-t时,如果清单中存在某些错误,它应该停止执行,而不是继续执行剩余的清单。

如果在节点上找不到该文件,我尝试了命令“ fail”,但出现此错误

Error: Could not retrieve catalog from remote server: Error 500 on SERVER: Server Error: Evaluation Error: Error while evaluating a Resource Statement, Evaluation Error: Error while evaluating a Function Call

我在下面尝试类似的操作,如果文件存在,则通知我存在,否则失败并停止执行

$file = "/tmp/file"
exec { "chk_${file}_exist":
  command => "true",
  path    =>  ["/usr/bin","/usr/sbin", "/bin"],
  onlyif  => "test -f ${file}"
}
-> if !(Exec["chk_${file}_exist"]) {
      fail('I am failing')
        }
else {
      notify { 'I am present  ":}
}

1 个答案:

答案 0 :(得分:0)

据我所知,Puppet中没有通用的机制可以使目录应用程序在单个资源失败时完全中止,尽管这种功能has been requested before。通常,通过resource relationships的一个方面或另一个方面来更精确地解决这个问题。

如果您的某个资源的正确应用取决于首先成功应用的另一种特定资源,则可以使用链接运算符之一或指定的资源元参数之一来声明两者之间的关系,从而将其描述给Puppet为此目的(<div class="category-center"> <div class="cbp-item-wrapper"> <div class="post-medias"> <a href="" target="_blank"> <img src="#" alt=""> </a> </div> <div class="post-info"> <h4 class="post-title"><a href="" target="_blank">This is awesome title</a></h4> </div> </div> </div>beforerequirenotify)。这样既可以确保这些资源的相对应用顺序,又可以确保在应用依赖项失败时不尝试应用依赖项。您可以通过与一侧或两侧的类或已定义类型的实例建立关系,甚至使用run stages来将这一概念应用于资源的

但是,目前尚无办法使目录应用程序整体上在有资源可应用的情况下,在发生资源故障时立即停止。