--- - name: Ensure Matrix directories exist ansible.builtin.file: path: "{{ item }}" state: directory owner: root group: root mode: '0755' loop: - "{{ matrix_base_dir }}" - "{{ matrix_data_dir }}" - "{{ matrix_config_dir }}" - "{{ matrix_media_dir }}" - "{{ matrix_postgres_dir }}" - name: Set ownership of Matrix config dir for Synapse user (UID 991) ansible.builtin.file: path: "{{ matrix_config_dir }}" state: directory owner: "991" group: "991" mode: '0755' recurse: yes - name: Set ownership of Matrix media dir for Synapse user ansible.builtin.file: path: "{{ matrix_media_dir }}" state: directory owner: "991" group: "991" mode: '0755' recurse: yes - name: Copy log.config (static file) ansible.builtin.copy: src: log.config dest: "{{ matrix_config_dir }}/log.config" owner: root group: root mode: '0644' - name: Deploy homeserver.yaml from template ansible.builtin.template: src: homeserver.yaml.j2 dest: "{{ matrix_config_dir }}/homeserver.yaml" owner: root group: root mode: '0644' - name: Deploy docker-compose.yml for Matrix ansible.builtin.template: src: docker-compose.yml.j2 dest: "{{ matrix_base_dir }}/docker-compose.yml" owner: root group: root mode: '0640' - name: Start Matrix stack via docker compose ansible.builtin.shell: | docker compose -f "{{ matrix_base_dir }}/docker-compose.yml" up -d args: chdir: "{{ matrix_base_dir }}" register: compose_result changed_when: "'Recreating' in compose_result.stdout or 'Creating' in compose_result.stdout" - name: Wait for Synapse to become healthy ansible.builtin.uri: url: "http://localhost:{{ matrix_port }}/health" timeout: 5 register: health_check until: health_check.status == 200 retries: 12 delay: 10 ignore_errors: yes