I would like to know how to loop over multiple tasks until condition is met.
#main.yml
- set_fact:
num: 1
req_num: 10
- name: Start to unregister entities
include_tasks: output.yml
loop: "{{ range(num, req_num + 1)|list }}"
#output.yml
- name: get status
raw: cat /tmp/output
register: rawoutput
- name: copy to localhost
copy:
content: "{{rawoutput.stdout}}"
dest: /tmp/output1
delegate_to: localhost
- name: reg output2
shell: awk something /tmp/output1 |awk '/something/,0' |head -n something |tail -n something > /tmp/output2 ; cat /tmp/output2
register: output2
delegate_to: localhost
- name: compare output2
debug:
msg: "{{item}}"
with_items: "{{ output2.stdout_lines }}"
until: item == "Synced"
retries: 2
delay: 2
#cat /tmp/output2
Synced
Syncing
Synced
Failed
I am using this, but the playbook quits when the subtask fail.
My goal is to make sure all the content from output2 is "Synced", loop output.yml
until the result is "Synced", or failed after x attempts.
Appreciate if there is better way of doing this. thanks
Thanks
question from:
https://stackoverflow.com/questions/65914952/ansible-loop-include-tasks-and-until-success 与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…