ANSIBLE 执行剧本中的跳过、已解救和已忽略结果的含义

74次阅读
没有评论

问题描述

在 Ansible 执行剧本时,用户想了解跳过(skipped)、已解救(rescued)和已忽略(ignored)结果的含义。同时,用户想知道在什么情况下,这些结果会与0不同。

解决方案

请注意以下操作可能会因版本差异而有所变化。
在 Ansible 执行剧本过程中,有时会出现一些特殊的情况,导致剧本的执行结果中出现跳过、已解救和已忽略的状态。下面是对这三种状态的解释以及可能导致这些状态不等于0的可能情况。

跳过(skipped)

在剧本执行时,如果某个任务(task)的执行条件不满足,即条件为false,那么这个任务会被跳过,不会执行。在执行摘要(play recap)中,skipped 表示被跳过的任务数量。例如,在以下的剧本示例中,第一个任务的执行条件为 false,因此它会被跳过:

- hosts: localhost
  tasks:
    - name: This task will be skipped
      debug:
        msg: You will never see this message.
      when: false

在执行摘要中,skipped 的数量将会增加 1。

已解救(rescued)

已解救是指在执行剧本过程中,某个任务由于发生错误而被捕获并解救的情况。这通常与错误处理相关。例如,在以下的剧本示例中,命令执行失败会被捕获并解救,并执行 rescue 下的 debug 任务:

- hosts: localhost
  tasks:
    - name: Failed command will be RESCUED
      block:
        - command: /usr/bin/false
      rescue:
        - debug:
            msg: "{{ ansible_failed_result }}"

在执行摘要中,rescued 的数量将会增加 1。

已忽略(ignored)

已忽略是指在执行剧本过程中,某个命令虽然执行失败,但被设置为可以被忽略的情况。这意味着即使命令执行失败,剧本仍会继续执行下去。例如,在以下的剧本示例中,命令执行失败被设置为可以被忽略:

- hosts: localhost
  tasks:
    - name: Failed command will be IGNORED
      command: /usr/bin/false
      ignore_errors: true

在执行摘要中,ignored 的数量将会增加 1。

总结来说,跳过、已解救和已忽略是在 Ansible 执行剧本过程中与错误处理和任务条件相关的状态。它们表示了剧本执行过程中的特殊情况,帮助你了解任务的执行情况和可能的错误处理策略。

若需了解更多关于错误处理和使用 block/rescue 的详细信息,请参考以下文档:
Ansible Playbooks 错误处理
使用块处理错误

在实际使用中,根据剧本的需求和错误处理策略,你可以根据情况来设置任务的条件、错误忽略或解救,以实现更灵活的剧本执行。

正文完