我们有一个 ansible 任务,如下所示
- 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 时,这将导致失败。
关于shell - 让 ansible 在没有退出代码停止 ssh 连接的情况下运行脚本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44525784/