Ansible では、変数はレジスタ出力から動的に取得されます。最初のループは、登録された出力結果から値を収集し、when 条件を満たすと、次のループが実行を開始します。Ansible で 1 つの when 条件で 2 つのループを使用する方法
- name: stop the http service
command: sh http.sh stop {{item}}
args:
chdir: /opt/http/
loop: “{{http.stdout_lines}}”
when: “item.stdout != 0"
loop: “{{wordcount.results}}”
これはコードですが、2つのループを連続して使用することはできません。1つのループが完了すると、次のループが実行されるはずです。
答え1
申し訳ありませんが、希望どおりには動作しません。loop
タスクごとに 1 回しか定義できません。2 番目の定義は無視されます。これを複数のタスクに分割する必要があるかもしれませんが、例から何を達成しようとしているのかが完全には明らかではないため、解決策を提案することはできません。コンテキストがさらに役立つ場合があります。