如何在Ansible shell模块中使用changed_when?

6
我有一个复杂的shell脚本,由ansible运行,我希望能够在系统发生更改时从中与ansible进行通信,以便ansible知道主机已被修改。这可以通过使用changed_when: condition来实现,但问题在于我无法真正依赖于特定的退出码用于表示成功有变化而不是成功没有变化。还有其他选项吗?我可以使用register:并在changed_when:中使用已注册的变量来检查输出中的占位符字符串吗?
1个回答

10

是的,你可以使用registered变量。例如:

- shell: mycommand.sh
  register: script_res
  changed_when: "'changed' in script_res.stdout"

Ansible文档中的Playbooks错误处理部分有更多类似的示例。此外,对于其他情况,例如failed_whenfail: msg = ... when:,这非常方便很多次。 - Peterino

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接