--- # Ensure Required Directories Exist - name: Ensure matrix-element-call paths exist ansible.builtin.file: path: "{{ item.path }}" state: directory mode: 0750 owner: "{{ matrix_user_username }}" group: "{{ matrix_user_groupname }}" loop: - path: "{{ matrix_element_call_base_path }}" - path: "{{ matrix_element_call_base_path }}/data" - path: "{{ matrix_element_call_base_path }}/config" - path: "{{ matrix_element_call_base_path }}/backend" # For LiveKit and Redis config # Ensure Configuration Files are in Place - name: Ensure Element Call config.json is in place ansible.builtin.template: src: "{{ role_path }}/templates/config.json.j2" dest: "{{ matrix_element_call_base_path }}/config/config.json" mode: 0640 owner: "{{ matrix_user_username }}" group: "{{ matrix_user_groupname }}" - name: Ensure LiveKit livekit.yaml is in place ansible.builtin.template: src: "{{ role_path }}/templates/livekit.yaml.j2" dest: "{{ matrix_element_call_base_path }}/backend/livekit.yaml" mode: 0640 owner: "{{ matrix_user_username }}" group: "{{ matrix_user_groupname }}" - name: Ensure Redis redis.conf is in place ansible.builtin.template: src: "{{ role_path }}/templates/redis.conf.j2" dest: "{{ matrix_element_call_base_path }}/backend/redis.conf" mode: 0640 owner: "{{ matrix_user_username }}" group: "{{ matrix_user_groupname }}" - name: Ensure matrix-element-call environment file is in place ansible.builtin.template: src: "{{ role_path }}/templates/env.j2" dest: "{{ matrix_element_call_base_path }}/config/env" mode: 0640 owner: "{{ matrix_user_username }}" group: "{{ matrix_user_groupname }}" - name: Ensure matrix-element-call Docker labels file is in place ansible.builtin.template: src: "{{ role_path }}/templates/labels.j2" dest: "{{ matrix_element_call_base_path }}/config/labels" mode: 0640 owner: "{{ matrix_user_username }}" group: "{{ matrix_user_groupname }}" # Ensure Docker Images are Pulled - name: Ensure matrix-element-call Docker image is pulled community.docker.docker_image: name: "{{ matrix_element_call_image }}" source: pull force_source: "{{ matrix_element_call_container_image_force_pull }}" register: element_call_image_result retries: "{{ devture_playbook_help_container_retries_count }}" delay: "{{ devture_playbook_help_container_retries_delay }}" until: element_call_image_result is not failed - name: Ensure jwt-service Docker image is pulled community.docker.docker_image: name: "ghcr.io/element-hq/lk-jwt-service:latest-ci" source: pull register: jwt_image_result retries: 3 delay: 10 until: jwt_image_result is not failed - name: Ensure livekit Docker image is pulled community.docker.docker_image: name: "livekit/livekit-server:latest" source: pull register: livekit_image_result retries: 3 delay: 10 until: livekit_image_result is not failed - name: Ensure redis Docker image is pulled community.docker.docker_image: name: "redis:6-alpine" source: pull register: redis_image_result retries: 3 delay: 10 until: redis_image_result is not failed # Ensure Docker Containers are Running - name: Run matrix-element-call Docker container community.docker.docker_container: name: "matrix-element-call" image: "{{ matrix_element_call_image }}" state: started restart_policy: unless-stopped env_file: "{{ matrix_element_call_base_path }}/config/env" labels: "{{ lookup('file', matrix_element_call_base_path ~ '/config/labels') | from_yaml }}" networks: - name: "{{ matrix_element_call_container_network }}" volumes: - "{{ matrix_element_call_base_path }}/config/config.json:/app/config.json" - "{{ matrix_element_call_base_path }}/data:/data" - name: Run jwt-service Docker container community.docker.docker_container: name: "matrix-jwt-service" image: "ghcr.io/element-hq/lk-jwt-service:latest-ci" state: started restart_policy: unless-stopped environment: LIVEKIT_SECRET: "{{ matrix_element_call_livekit_dev_key }}" # User-specified key LIVEKIT_URL: "{{ matrix_element_call_livekit_service_url }}" LIVEKIT_KEY: "devkey" networks: - name: "{{ matrix_element_call_container_network }}" - name: Run livekit Docker container community.docker.docker_container: name: "matrix-livekit" image: "livekit/livekit-server:latest" state: started restart_policy: unless-stopped command: "--dev --config /etc/livekit.yaml" volumes: - "{{ matrix_element_call_base_path }}/backend/livekit.yaml:/etc/livekit.yaml" network_mode: "host" - name: Run redis Docker container community.docker.docker_container: name: "matrix-redis" image: "redis:6-alpine" state: started restart_policy: unless-stopped command: redis-server /etc/redis.conf volumes: - "{{ matrix_element_call_base_path }}/backend/redis.conf:/etc/redis.conf" networks: - name: "{{ matrix_element_call_container_network }}" # Ensure Systemd Services are Set Up - name: Ensure matrix-element-call systemd service is installed ansible.builtin.template: src: "{{ role_path }}/templates/element-call.service.j2" dest: "{{ devture_systemd_docker_base_systemd_path }}/matrix-element-call.service" mode: 0644 - name: Ensure matrix-element-call systemd service is enabled and started ansible.builtin.systemd: name: matrix-element-call enabled: true state: started daemon_reload: true