Changed_when 不工作,如果任务结果失败

car*_*995 6 ansible

为什么我无法使用来更改返回changed_when的任务的状态?failedchanged

例如,我有一个自定义模块,允许我检查卷是否存在,如果卷不存在,它将失败。

剧本片段:

---
- name: Example ansible playbook
  tasks:
    - name: Check existence of the volume
      custom_name_space_my_volume:
        name: ABC #name of the volume
      changed_when: true
Run Code Online (Sandbox Code Playgroud)

如果该卷ABC不存在,则结果为failed。但为什么没有change_when: true导致结果返回changed呢?

注意:上面的例子可能没有逻辑意义,因为它没有做一些有用的事情。但我只是想用它作为我的问题的样本。

toy*_*ian 4

因为当任务失败时failed会覆盖。changed

以 shell 模块为例。默认情况下,它总是显示已更改,因为 ansible 无法决定您的脚本是否做了任何事情。但如果脚本退出时错误代码不是0. 当它这样做时,您希望它显示failed而不是changed

为了确保您的任务永远不会结束failed,您可以添加failed_when: false.

---
- name: Example ansible playbook
  tasks:
    - name: Check existence of the volume
      custom_name_space_my_volume:
        name: ABC #name of the volume
      changed_when: true
      failed_when: false
Run Code Online (Sandbox Code Playgroud)

这将使您的任务永远不会显示failed,因此最好提供一个合理的表达式来将其标记为failed实际失败的时间。