Ansible 如果任务结果失败,则在不工作时更改\u

Ansible 如果任务结果失败,则在不工作时更改\u,ansible,Ansible,为什么当将返回失败的任务状态更改为已更改的任务状态时,我不能使用changed\u 例如,我有一个自定义模块,允许我检查卷是否存在,如果卷不存在,它将失败 剧本片段: --- -名称:示例ansible剧本 任务: -名称:检查卷是否存在 自定义\u名称\u空间\u我的\u卷: 名称:ABC#卷名 更改时间:true 如果卷ABC不存在,则结果是失败。但是当:true导致结果返回changed时,为什么没有更改 注意:上面的示例可能没有逻辑意义,因为它没有做任何有用的事情。但是我只是想用它作为

为什么当将返回失败的任务状态更改为已更改的任务状态时,我不能使用
changed\u

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

剧本片段:

---
-名称:示例ansible剧本
任务:
-名称:检查卷是否存在
自定义\u名称\u空间\u我的\u卷:
名称:ABC#卷名
更改时间:true
如果卷
ABC
不存在,则结果是
失败
。但是当:true
导致结果返回
changed
时,为什么
没有更改


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

因为当任务失败时,
失败了
覆盖了
改变了的

例如,以shell模块为例。默认情况下,它将始终显示“已更改”,因为ansible无法决定脚本是否执行了任何操作。但如果脚本退出时错误代码不是
0
,它也可能失败。当它这样做时,您希望它显示
失败
,而不是
更改

为了确保您的任务永远不会以失败告终,您可以在:false时添加失败

---
-名称:示例ansible剧本
任务:
-名称:检查卷是否存在
自定义\u名称\u空间\u我的\u卷:
名称:ABC#卷名
更改时间:true
当:false时失败

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

您可能会发现其他有趣的讨论:、和