2016-11-03 8 views
1

私はコマンドをループしてstdoutで特定のフレーズを待っていますが、接続できないとコマンドが "1"を返すため、タスクが早すぎて失敗します。リターンコードを無視するにはどうすればよいですか?可能性:コマンドをループしてリターンコードを無視する方法は?

- name: Wait for Fabric Creation to complete 
    action: shell /usr/local/jboss/jboss-fuse/bin/client container-list 
    register: result 
    until: result.stdout.find("success") 
    retries: 20 
    delay: 10 
+0

?あなたが接続していないときの結果の内容を教えてくれますか? – Shasha99

+0

@ Shasha99あなたが何を求めているのか分かりません。 [リターンコード](https://en.wikipedia.org/wiki/Exit_status)は、stdoutとstderrのどちらとも関係ありません。 – techraf

+0

Ohh ..あなたはresult.rcについて話しています。私はいくつかの考えを持っていました。 – Shasha99

答えて

0

(タスクの結果は、シェルスクリプトの戻りコードに基づいて行われますが、 - これはfailed_whenで変更することができます)それが失敗本当にコマンドでの問題ではありません。一致が見つからない場合は、標準出力にはsuccess文字列が存在しないときにブール値のチェックは実際に渡し、

until: result.stdout.find("success") 

find戻り-1値:

本当の問題は、以下の条件そのものです。したがって、untilの状態は最初の実行で満たされます。


あなたはに条件を変更する必要があります。戻りコードが標準出力や標準エラー出力に来ている

- name: Wait for Fabric Creation to complete 
    action: shell /usr/local/jboss/jboss-fuse/bin/client container-list 
    register: result 
    until: result.stdout.find("success") != -1 
    retries: 20 
    delay: 10 
+0

恐ろしい!ありがとうございました! –

関連する問題