Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/video/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ansible:有条件地中断重试循环_Ansible - Fatal编程技术网

Ansible:有条件地中断重试循环

Ansible:有条件地中断重试循环,ansible,Ansible,考虑执行一个ansible任务,该任务检查具有三种可能性的流程的返回值: 没有开始 成功 失败 ansible应该 通过任务显然是“成功” 任务失败,然后重试“未启动”(由重试:xx,延迟:xx部分处理) 任务失败,无需再次重试*关于“失败” 所以,问题基本上是我是否能区分“失败并重试”和“失败且不重试”两种情况(failed\u,当稍微短一点时)。或者,换言之,我如何有条件地中断重试 谢谢,直到是中断重试的条件。它不携带任何关于任务失败与否的信息。在您的特定情况下,当您的任务报告“通过”或

考虑执行一个ansible任务,该任务检查具有三种可能性的流程的返回值:

  • 没有开始
  • 成功
  • 失败
  • ansible应该

    • 通过任务显然是“成功”
    • 任务失败,然后重试“未启动”(由重试:xx,延迟:xx部分处理)
    • 任务失败,无需再次重试*关于“失败”
    所以,问题基本上是我是否能区分“失败并重试”和“失败且不重试”两种情况(
    failed\u,当
    稍微短一点时)。或者,换言之,我如何有条件地中断重试


    谢谢

    ,直到
    是中断重试的条件。它不携带任何关于任务失败与否的信息。在您的特定情况下,当您的任务报告“通过”或“失败”时,您希望停止重试,并在报告“未启动”时继续重试(或根据您的情况,可能是其他任何情况,请参见下文)

    failed\u when
    是表示任务是否失败的条件,将在重试循环按条件中断或达到最大重试次数后进行评估。在这种最新情况下,“未启动”被视为失败消息

    基本上(使用伪代码)

    -name:我的重试任务直到通过或结束
    一些可解析模块:
    arg1:value1
    注册:通过或死亡
    重试次数:10次
    延误:10
    直到:在['pass'、'failure']中通过
    #具有负值列表的其他选项
    #直到:pass_或_die.resultvar不在['not start']
    失败时:在['failure'、'not'u started']中通过\u或\u die.resultvar
    #再一次选择负面列表
    #当:通过或死亡时失败。结果不在['pass']
    
    下面是我如何测试它以确保它按预期工作的

    ---
    -姓名:通过或死亡
    主机:本地主机
    收集事实:错误
    任务:
    -名称:重试,直到通过或死亡
    啜食:
    路径:/tmp/slurp.txt
    寄存器:slurped
    重试次数:1000次
    延误:10
    直到:slurped.content | b64解码不在['not start']
    当:slurped.content | B64解码不在['pass'中时失败
    
    在发布剧本之前,发布

    echo -n "not started" > /tmp/slurp.txt
    
    然后启动剧本,并在单独的终端发行

    # To fail the task
    echo -n "failure" > /tmp/slurp.txt
    # To pass the task
    echo -n "pass" > /tmp/slurp.txt
    
    下次重试时,您将在playbook执行中看到结果

    您也可以不处理该文件,等待它在最后一次重试时失败(报告“未启动”,这是一种失败条件)