我们有一个艰巨的任务,如下所示

- 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时,这将导致失败。

10-01 13:19