Ansible忽略任务中的错误,若任何任务有错误,则在剧本末尾失败

Ansible忽略任务中的错误,若任何任务有错误,则在剧本末尾失败,ansible,ansible-playbook,Ansible,Ansible Playbook,我正在学英语。我有一个剧本来清理资源,我希望剧本能够忽略每一个错误,一直持续到最后,如果有错误,最后就会失败 我可以忽略错误 ignore_errors: yes 如果这是一项任务,我可以做(从ansible错误捕获) 我最后怎么会失败?我有几个任务,我的“何时”条件是什么?使用模块 对出现错误时需要忽略的每项任务使用“忽略错误” 每当任务执行失败时,设置一个标志(例如,result=false) 在剧本的末尾,检查是否设置了标志,并根据该标志,使执行失败 更新: 使用register存储

我正在学英语。我有一个剧本来清理资源,我希望剧本能够忽略每一个错误,一直持续到最后,如果有错误,最后就会失败

我可以忽略错误

  ignore_errors: yes
如果这是一项任务,我可以做(从ansible错误捕获)

我最后怎么会失败?我有几个任务,我的“何时”条件是什么?

使用模块

  • 对出现错误时需要忽略的每项任务使用“忽略错误”
  • 每当任务执行失败时,设置一个标志(例如,result=false)
  • 在剧本的末尾,检查是否设置了标志,并根据该标志,使执行失败
  • 更新:

    使用register存储任务的结果,如示例中所示。然后,使用如下任务:

    - name: Set flag
      set_fact: flag = failed
      when: "'FAILED' in command_result.stderr"
    

    失败模块工作得很好!谢谢

    我必须在检查之前定义我的事实,否则我会得到一个未定义的变量错误

    我在用引号和空格设置事实时遇到了问题

    这起到了作用:

    set_fact: flag="failed"
    
    这引发了以下错误:

    set_fact: flag = failed 
    

    您可以在块中包装所有可能失败的任务,并对该块使用
    ignore\u errors:yes

    tasks:
      - name: ls
        command: ls -la
      - name: pwd
        command: pwd
    
      - block:
        - name: ls non-existing txt file
          command: ls -la no_file.txt
        - name: ls non-existing pic
          command: ls -la no_pic.jpg
        ignore_errors: yes 
    

    阅读有关块中错误处理的更多信息。

    谢谢!如何仅在ansible中的错误上设置标志?请参阅更新。基本上,您是在每次任务执行后设置此标志。如果在此剧本末尾,标志设置为失败,则剧本失败。只有当您的任何任务失败时,它才会设置为失败。否则它将不会被设置为失败,playbook执行将成功。当和
    命令结果失败时,您可能希望查看
    失败,\u而不是字符串处理(它将为您提供一些对其他命令更通用的工作).我们有没有办法将其标记为失败,而不是忽略并继续执行。但最终它将如何失败?我认为这并不能回答问题。
    
    set_fact: flag = failed 
    
    tasks:
      - name: ls
        command: ls -la
      - name: pwd
        command: pwd
    
      - block:
        - name: ls non-existing txt file
          command: ls -la no_file.txt
        - name: ls non-existing pic
          command: ls -la no_pic.jpg
        ignore_errors: yes