正如nikobelia在评论中指出的那样,grep
当它与任何行不匹配时返回退出代码1.Ansible然后将此(实际上是来自shell /命令任务的0以外的任何状态代码)解释为错误,因此立即失败.
您可以通过使用来告诉Ansible忽略shell /命令任务中的响应代码ignore_errors
.虽然grep
这会忽略实际错误(由返回码2给出),所以你可能想要这样使用failed_when
:
- name: register version check shell: cat /root/versions.js | grep -q {{VERSION}} register: current_version failed_when: current_version.rc == 2