2017-06-13 25 views
1

我們有一個ansible任務,它看起來像下面有ansible運行腳本,而不退出代碼停止ssh連接

- 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連接。

我們如何繞過這一點,讓退出信號返回而不會出現錯誤。

回答

2

您可以使用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.