Kevin Veen-Birkenbach 597e9d5222
Refactor async execution handling across LDAP and Nextcloud roles
- Introduce global async configuration in group_vars/all/00_general.yml:
  - ASYNC_ENABLED (disabled in debug mode)
  - ASYNC_TIME (default 300s, omitted if async disabled)
  - ASYNC_POLL (0 for async fire-and-forget, 10 for sync mode)
- Replace hardcoded async/poll values with global vars in:
  - svc-db-openldap (03_users.yml, 04_update.yml)
  - web-app-mig (02_build_data.yml)
  - web-app-nextcloud (03_admin.yml, 04_system_config.yml, 05_plugin.yml,
    06_plugin_routines.yml, 07_plugin_enable_and_configure.yml)
- Guard changed_when and failed_when conditions to only evaluate in synchronous
  mode to avoid accessing undefined rc/stdout/stderr in async runs

  https://chatgpt.com/share/689cd8cc-7fbc-800f-bd06-a667561573bf
2025-08-13 20:26:40 +02:00

39 lines
1.3 KiB
YAML

- name: Build data (single async task)
shell: |
set -euo pipefail
infinito build tree --no-signal --alarm-timeout 0 -s {{ mig_roles_meta_volume }}
infinito build roles_list --no-signal --alarm-timeout 0 -o {{ mig_roles_meta_list }}
async: "{{ (3600 if ASYNC_ENABLED else omit) | default(omit) }}"
poll: "{{ ASYNC_POLL if ASYNC_ENABLED else omit }}"
register: mig_build_job
- name: Fail if MIG build job did not start
fail:
msg: >
MIG build job failed to start. No job ID returned.
when: mig_build_job.ansible_job_id is not defined
- name: Debug MIG build job ID
debug:
msg: "MIG build job started with ID: {{ mig_build_job.ansible_job_id }}"
when: MODE_DEBUG | bool
- debug:
msg: "Waiting for MIG build job to finish. Set 'build_data.wait_for=false' in the application config to skip waiting and improve performance."
when: mig_wait_for_build | bool
- name: Wait for MIG build job to finish (enforce failure)
async_status:
jid: "{{ mig_build_job.ansible_job_id }}"
register: mig_build_result
until: mig_build_result.finished
retries: 360
delay: 10
when:
- mig_wait_for_build | bool
failed_when:
- mig_build_result.result is defined
- mig_build_result.result.rc is defined
- mig_build_result.result.rc != 0