diff --git a/roles/web-app-mig/config/main.yml b/roles/web-app-mig/config/main.yml index b0dba996..2cb2bc07 100644 --- a/roles/web-app-mig/config/main.yml +++ b/roles/web-app-mig/config/main.yml @@ -36,4 +36,11 @@ server: - "mig.{{ primary_domain }}" aliases: - "meta-infinite-graph.{{ primary_domain }}" -build_data: true # Enables the building of the meta data which the graph requiers + +build_data: + # This shouldn't be relevant anymore, because the data is anyhow build async in background + # Enables the building of the meta data which the graph requiers + enabled: true + + # Recommended to set this to false in inventory to optimize speed + wait_for: true diff --git a/roles/web-app-mig/tasks/01_core.yml b/roles/web-app-mig/tasks/01_core.yml index d768dac0..f8fdd8cb 100644 --- a/roles/web-app-mig/tasks/01_core.yml +++ b/roles/web-app-mig/tasks/01_core.yml @@ -20,12 +20,6 @@ include_role: name: cmp-docker-proxy -- name: Create tree - command: "infinito build tree --no-signal --alarm-timeout 0 -s {{ mig_roles_meta_volume }}" - when: - - mig_build_data - -- name: Create roles list - command: "infinito build roles_list --no-signal --alarm-timeout 0 -o {{ mig_roles_meta_list }}" - when: - - mig_build_data +- name: Build data (single async task) + include_tasks: 02_build_data.yml + when: mig_build_data | bool diff --git a/roles/web-app-mig/tasks/02_build_data.yml b/roles/web-app-mig/tasks/02_build_data.yml new file mode 100644 index 00000000..7810f53d --- /dev/null +++ b/roles/web-app-mig/tasks/02_build_data.yml @@ -0,0 +1,38 @@ +- 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 + poll: 0 + 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: enable_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 + diff --git a/roles/web-app-mig/vars/main.yml b/roles/web-app-mig/vars/main.yml index 7311f59a..8d02501c 100644 --- a/roles/web-app-mig/vars/main.yml +++ b/roles/web-app-mig/vars/main.yml @@ -1,12 +1,13 @@ # General -application_id: web-app-mig # ID of the application, should be the name of the role folder +application_id: web-app-mig # Docker -docker_compose_flush_handlers: true -docker_pull_git_repository: true -docker_repository_address: "https://github.com/kevinveenbirkenbach/meta-infinite-graph" +docker_compose_flush_handlers: true +docker_pull_git_repository: true +docker_repository_address: "https://github.com/kevinveenbirkenbach/meta-infinite-graph" # Helper variables -mig_image: "mig:latest" -mig_container: "mig" -mig_build_data: "{{ applications | get_app_conf(application_id, 'build_data') }}" \ No newline at end of file +mig_image: "mig:latest" +mig_container: "mig" +mig_build_data: "{{ applications | get_app_conf(application_id, 'build_data.enabled') }}" +mig_wait_for_build: "{{ applications | get_app_conf(application_id, 'build_data.wait_for') }}" \ No newline at end of file