我们有一个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的退出信号时,这是有效的我猜这是因为“exit”在远程主机上运行,然后它终止了ssh连接。
我们如何绕过这一点并在没有错误的情况下返回退出信号。
答案 0 :(得分:5)
您可以使用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时,这将导致失败。
答案 1 :(得分:1)
通常,Playbooks将停止在主机上执行更多步骤 任务失败。但有时候,你想继续。为此, 写一个看起来像这样的任务:
http://docs.ansible.com/ansible/playbooks_error_handling.html#ignoring-failed-commands Ignoring Failed Commands
- name: Check if that created
script: verification.sh
register: verification
changed_when: verification.rc == 1
ignore_errors: yes