我们有一个艰巨的任务,如下所示
- name: Check if that created
script: verification.sh
register: verification
changed_when: verification.rc == 1
上面的任务运行一个脚本,如果失败或成功,该脚本将返回退出信号。一个示例部分是
if [[ "$item" == "$name" ]]; then
printf "TEST"
exit 1
fi
问题在于当返回非0值的退出信号时,ansible中的ssh似乎终止,并给出错误消息为
TASK [Test Task] ******************
fatal: [default]: FAILED! => {"changed": true, "failed": true, "rc": 1, "stderr": "Shared connection to 127.0.0.1 closed.\r\n", "stdout": "TEST", "stdout_lines": ["TEST"]}
但是,当我们在脚本中返回退出信号0时,此方法有效
我猜这是因为“退出”在远程主机上运行,然后终止了ssh连接。
我们如何绕过这个问题并返回退出信号而不会出现错误。
最佳答案
您可以使用failed_when
来控制what defines failure:
- name: Check if that created
script: verification.sh
register: verification
changed_when: verification.rc == 1
failed_when: verification.rc not in [0,1]
当退出代码不是0和1时,这将导致失败。