- name: Increment counter ansible.builtin.set_fact: rcount: "{{ 1 if rcount is undefined else rcount | int + 1 }}" - name: Abort run and notify if retries exceed defined limits when: rcount|int >= fail_count block: - name: Show rcount and num_retries ansible.builtin.debug: msg: "Failed on retry {{ rcount }} with a max of {{ num_retries }}" - name: Log failure to API ansible.builtin.uri: url : "{{ webhook }}" headers: Authorization : "Token {{ webhook_key }}" Content-type : 'application/json' method : POST status_code : 200 validate_certs : false return_content : false body_format : json body: Cloudy: "With a chance of meatballs." - name: End condition met. Aborting... ansible.builtin.fail: msg: "Bye" - name: We were successful when: rcount|int == num_retries block: - name: Show rcount and num_retries ansible.builtin.debug: msg: "Success on retry {{ rcount }} with a max of {{ num_retries }}" - name: Log success to API ansible.builtin.uri: url : "{{ webhook }}" headers: Authorization : "Token {{ webhook_key }}" Content-type : 'application/json' method : POST status_code : 200 validate_certs : false return_content : false body_format : json body: Somewhere: "Over the rainbow." - name: End condition met. Exiting gracefully... ansible.builtin.meta: end_play - name: Run a series of test commands ansible.builtin.command : "{{ item }}" changed_when : false loop : "{{ check_commands }}" register : r_check_commands - name: Current status ansible.builtin.debug: msg: "Currently on run {{ rcount }} of {{ num_retries }}." run_once: true - name: Log status update to API ansible.builtin.uri: url : "{{ webhook }}" headers: Authorization : "Token {{ webhook_key }}" Content-type : 'application/json' method : POST status_code : 200 validate_certs : false return_content : false body_format : json body: Itsa: "me! Mario! - Finished run {{ rcount }} of {{ num_retries }}." - name: Pause for effect ansible.builtin.pause: seconds: "{{ pause_time }}" - name: Include ourself for recursion ansible.builtin.include_tasks: tasks/long_running_tasks.yml when: rcount|int <= num_retries