From ed866bf177a466ea3e54cb1bce04ed5fff2be42a Mon Sep 17 00:00:00 2001 From: Kevin Veen-Birkenbach Date: Sun, 20 Jul 2025 20:07:43 +0200 Subject: [PATCH] Finished bbb implementation --- roles/docker-compose/handlers/main.yml | 23 +++++++++++-------- .../{repository.yml => 01_repository.yml} | 2 +- .../tasks/{files.yml => 02_files.yml} | 12 +--------- roles/docker-compose/tasks/03_ensure_up.yml | 13 +++++++++++ roles/docker-compose/tasks/main.yml | 7 ++++-- roles/web-app-bigbluebutton/handlers/main.yml | 4 ++-- roles/web-app-bigbluebutton/tasks/main.yml | 21 +++++++++-------- 7 files changed, 48 insertions(+), 34 deletions(-) rename roles/docker-compose/tasks/{repository.yml => 01_repository.yml} (91%) rename roles/docker-compose/tasks/{files.yml => 02_files.yml} (72%) create mode 100644 roles/docker-compose/tasks/03_ensure_up.yml diff --git a/roles/docker-compose/handlers/main.yml b/roles/docker-compose/handlers/main.yml index 739626cf..75c518a6 100644 --- a/roles/docker-compose/handlers/main.yml +++ b/roles/docker-compose/handlers/main.yml @@ -1,12 +1,4 @@ --- -- name: rebuild docker repository - command: - cmd: docker compose build - chdir: "{{docker_repository_path}}" - environment: - COMPOSE_HTTP_TIMEOUT: 600 - DOCKER_CLIENT_TIMEOUT: 600 - - name: Validate Docker Compose configuration command: cmd: docker compose -f {{ docker_compose.files.docker_compose }} config --quiet @@ -18,8 +10,21 @@ - docker compose up - docker compose restart +- name: Build docker + command: + cmd: docker compose build + chdir: "{{docker_repository_path}}" + environment: + COMPOSE_HTTP_TIMEOUT: 600 + DOCKER_CLIENT_TIMEOUT: 600 + listen: + - docker compose build + - docker compose up # This is just here because I didn't took the time to refactor + # @todo go over all docker compose up implementations and check where it makes sense to user docker compose build and where docker compose up + when: application_id != 'web-app-bigbluebutton' # @todo solve this on a different way, just a fast hack + - name: docker compose up - shell: docker-compose -p {{ application_id | get_entity_name }} up -d --force-recreate --remove-orphans --build + shell: docker-compose -p {{ application_id | get_entity_name }} up -d --force-recreate --remove-orphans args: chdir: "{{ docker_compose.directories.instance }}" executable: /bin/bash diff --git a/roles/docker-compose/tasks/repository.yml b/roles/docker-compose/tasks/01_repository.yml similarity index 91% rename from roles/docker-compose/tasks/repository.yml rename to roles/docker-compose/tasks/01_repository.yml index f850a370..845941ed 100644 --- a/roles/docker-compose/tasks/repository.yml +++ b/roles/docker-compose/tasks/01_repository.yml @@ -8,6 +8,6 @@ dest: "{{ docker_repository_path }}" update: yes notify: + - docker compose build - docker compose up - - rebuild docker repository become: true \ No newline at end of file diff --git a/roles/docker-compose/tasks/files.yml b/roles/docker-compose/tasks/02_files.yml similarity index 72% rename from roles/docker-compose/tasks/files.yml rename to roles/docker-compose/tasks/02_files.yml index dbf1c037..7d032210 100644 --- a/roles/docker-compose/tasks/files.yml +++ b/roles/docker-compose/tasks/02_files.yml @@ -31,14 +31,4 @@ src: "docker-compose.yml.j2" dest: "{{ docker_compose.files.docker_compose }}" notify: docker compose up - register: docker_compose_template - -- name: "Check if any container is running in {{ docker_compose.directories.instance }}" - command: docker compose ps -q --filter status=running - args: - chdir: "{{ docker_compose.directories.instance }}" - register: docker_ps - changed_when: (docker_ps.stdout | trim) == "" - notify: docker compose up - when: not (docker_compose_template.changed or env_template.changed) - ignore_errors: true \ No newline at end of file + register: docker_compose_template \ No newline at end of file diff --git a/roles/docker-compose/tasks/03_ensure_up.yml b/roles/docker-compose/tasks/03_ensure_up.yml new file mode 100644 index 00000000..1f4b554b --- /dev/null +++ b/roles/docker-compose/tasks/03_ensure_up.yml @@ -0,0 +1,13 @@ +- name: "Check if any container is running in {{ docker_compose.directories.instance }}" + command: docker compose ps -q --filter status=running + args: + chdir: "{{ docker_compose.directories.instance }}" + register: docker_ps + changed_when: (docker_ps.stdout | trim) == "" + when: > + not ( + docker_compose_template.changed | default(false) + or + env_template.changed | default(false) + ) + notify: docker compose up diff --git a/roles/docker-compose/tasks/main.yml b/roles/docker-compose/tasks/main.yml index 4a22d954..19abcb40 100644 --- a/roles/docker-compose/tasks/main.yml +++ b/roles/docker-compose/tasks/main.yml @@ -17,13 +17,16 @@ with_dict: "{{ docker_compose.directories }}" - name: "Include routines to set up a git repository based installaion for '{{application_id}}'." - include_tasks: "repository.yml" + include_tasks: "01_repository.yml" when: docker_pull_git_repository | bool - name: "Include routines file management routines for '{{application_id}}'." - include_tasks: "files.yml" + include_tasks: "02_files.yml" when: not docker_compose_skipp_file_creation | bool +- name: "Ensure that {{ docker_compose.directories.instance }} is up" + include_tasks: "03_ensure_up.yml" + - name: "flush database, docker and proxy for '{{ application_id }}'" meta: flush_handlers when: docker_compose_flush_handlers | bool diff --git a/roles/web-app-bigbluebutton/handlers/main.yml b/roles/web-app-bigbluebutton/handlers/main.yml index da6a338a..26f14d12 100644 --- a/roles/web-app-bigbluebutton/handlers/main.yml +++ b/roles/web-app-bigbluebutton/handlers/main.yml @@ -9,14 +9,14 @@ listen: setup bigbluebutton - name: Copy docker-compose.yml from origin to final location - ansible.builtin.copy: + copy: src: "{{ docker_compose_file_origine }}" dest: "{{ docker_compose_file_final }}" remote_src: yes listen: setup bigbluebutton - name: Replace bind mounts by named volume mounts - ansible.builtin.replace: + replace: path: "{{ docker_compose_file_final }}" regexp: "{{ item.regexp }}" replace: "{{ item.replace }}" diff --git a/roles/web-app-bigbluebutton/tasks/main.yml b/roles/web-app-bigbluebutton/tasks/main.yml index 20023613..f4b67fb0 100644 --- a/roles/web-app-bigbluebutton/tasks/main.yml +++ b/roles/web-app-bigbluebutton/tasks/main.yml @@ -37,7 +37,7 @@ notify: restart nginx - name: "Remove directory {{ docker_compose.directories.env }}" - ansible.builtin.file: + file: path: "{{ docker_compose.directories.env }}" state: absent @@ -48,12 +48,20 @@ notify: setup bigbluebutton - name: Create symbolic link from .env file to target location - ansible.builtin.file: + file: src: "{{ bbb_env_file_origine }}" dest: "{{ bbb_env_file_link }}" state: link notify: setup bigbluebutton +- name: "Check if any container is running in {{ docker_compose.directories.instance }}" + command: docker compose ps -q --filter status=running + args: + chdir: "{{ docker_compose.directories.instance }}" + register: docker_ps + changed_when: (docker_ps.stdout | trim) == "" + notify: setup bigbluebutton + - name: flush docker service meta: flush_handlers @@ -62,7 +70,7 @@ host: "{{ domains | get_domain('web-app-bigbluebutton') }}" port: 80 delay: 5 - timeout: 600 + timeout: 300 - name: create admin command: @@ -70,9 +78,4 @@ chdir: "{{ docker_compose.directories.instance }}" when: bigbluebutton_setup ignore_errors: true - register: admin_creation_result - -- name: print admin user data - debug: - msg: "{{ admin_creation_result.stdout }}" - when: bigbluebutton_setup \ No newline at end of file + register: admin_creation_result \ No newline at end of file