mirror of
https://github.com/kevinveenbirkenbach/computer-playbook.git
synced 2025-08-15 08:30:46 +02:00
Refactor MIG build process to run asynchronously with optional wait control
- Moved MIG data build commands into a dedicated 02_build_data.yml task file. - Added async execution (async: 3600, poll: 0) for non-blocking build. - Introduced mig_wait_for_build variable to optionally wait for completion. - Added debug message to inform how to disable waiting via build_data.wait_for=false for performance. - Updated config to use nested build_data.enabled and build_data.wait_for structure. - Adjusted variable lookups accordingly. https://chatgpt.com/share/689b54d2-e3b0-800f-91df-939ebc5e12ef
This commit is contained in:
parent
0b3b3a810a
commit
53e5c563ae
@ -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
|
||||
|
@ -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
|
||||
|
38
roles/web-app-mig/tasks/02_build_data.yml
Normal file
38
roles/web-app-mig/tasks/02_build_data.yml
Normal file
@ -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
|
||||
|
@ -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') }}"
|
||||
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') }}"
|
Loading…
x
Reference in New Issue
Block a user