2017-06-23 4 views
2

endがゼロである変数である可能性のあるwith_sequenceループで問題が発生しています。 私はループをスキップする方法を探しているので、 "逆数を数えて負の値にする"というエラーは発生しません。簡易不可能な条件with_sequence on可変終了のループが開始よりも小さい可能性があります

サンプル:when条件はループの各反復で実行される

- name : Register zero as var 

    # The real command is something like "script | filter | wc -l" 
    shell: echo 0 
    register: countvar 

    # I want this loop to run only when countvar is > 0 

- name: Do smthg with countvar 
    command: echo "{{ item }}" 
    with_sequence: start=1 end={{countvar.stdout|int}} 
    when: countvar.stdout|int >= 1 

答えて

1

、それだけ反復をスキップし、ループを入力しないようにする方法として使用することができません。

あなたはansible> = 2.0を使用している場合、あなたはあなたの状態であなたのタスクの周りblockを使用することができます。

- block: 
    - name: Do smthg with countvar 
     command: echo "{{ item }}" 
     with_sequence: start=1 end={{countvar.stdout|int}} 
    when: countvar.stdout|int > 0 

しかし、あなたが言ったように、それは(私は私がテストしていない動作しません。とにかくendの値が評価され、タスクが失敗するため)。解決策はそれを保護することです。次にblock部分をスキップできます。

- name: Do smthg with countvar 
    command: echo "{{ item }}" 
    with_sequence: start=1 end={{countvar.stdout|int if countvar.stdout|int > 0 else 1}} 
    when: countvar.stdout|int > 0 
+0

問題をおねがいしますが、問題を解決できないようです。エラーは依然として存在します。潜在的な2.3.0。 – JohnLoopM

+0

私はあなたに正しい解決策を与えるために私の答えを編集しました – zigarn

+0

お返事ありがとうございました。条件がバグではない場合でもブロックが評価されていると思いますか? – JohnLoopM

関連する問題