27 lines
1 KiB
YAML
27 lines
1 KiB
YAML
|
# ============================================================
|
||
|
# Do While loops cannot be used on task includes.
|
||
|
# See: https://github.com/ansible/ansible/issues/17098
|
||
|
#
|
||
|
# So as a workaround we use a regular loop to repeatedly attempt
|
||
|
# obtaining a lock.
|
||
|
#
|
||
|
# For this to work we need to skip the subsequent iterations
|
||
|
# once we get a lock, and delay between iterations if we
|
||
|
# did not obtain the lock.
|
||
|
#
|
||
|
# This file encapsulates this logic to reduce the spam from
|
||
|
# skipped tasks in the ansible log.
|
||
|
# ============================================================
|
||
|
|
||
|
- include_tasks: obtain-lock.yaml
|
||
|
# Skip obtaining a lock if we've already succeeded in getting it
|
||
|
when: "not won_lock|default(False)|bool"
|
||
|
|
||
|
- name: Lock Retry Delay
|
||
|
wait_for:
|
||
|
# Add some random jitter to the delay to reduce lock contention
|
||
|
timeout: "{{ obtain_lock_delay_seconds + 15|random }}"
|
||
|
# Only delay if we're retrying, so skip the delay if we're
|
||
|
# on the last attempt or have got the lock
|
||
|
when: "obtain_lock_attempt < (max_obtain_lock_attempts - 1) and not won_lock|bool"
|