70487061f4
This doesn't replace all usage of `-v`, but it's a start. People sometimes troubleshoot by deleting files (especially bridge config files). Restarting Synapse with a missing registration.yaml file for a given bridge, causes the `-v /something/registration.yaml:/something/registration.yaml:ro` option to force-create `/something/registration.yaml` as a directory. When a path that's provided to the `-v` option is missing, Docker auto-creates that path as a directory. This causes more breakage and confusion later on. We'd rather fail, instead of magically creating directories. Using `--mount`, instead of `-v` is the solution to this. From Docker's documentation: > When you use --mount with type=bind, the host-path must refer to an existing path on the host. > The path will not be created for you and the service will fail with an error if the path does not exist.
79 lines
3.0 KiB
YAML
79 lines
3.0 KiB
YAML
---
|
|
|
|
# If the matrix-synapse role is not used, `matrix_synapse_role_executed` won't exist.
|
|
# We don't want to fail in such cases.
|
|
- name: Fail if matrix-synapse role already executed
|
|
fail:
|
|
msg: >-
|
|
The matrix-bridge-mautrix-whatsapp role needs to execute before the matrix-synapse role.
|
|
when: "matrix_synapse_role_executed|default(False)"
|
|
|
|
- name: Ensure Mautrix Whatsapp image is pulled
|
|
docker_image:
|
|
name: "{{ matrix_mautrix_whatsapp_docker_image }}"
|
|
source: "{{ 'pull' if ansible_version.major > 2 or ansible_version.minor > 7 else omit }}"
|
|
|
|
- name: Ensure Mautrix Whatsapp base directory exists
|
|
file:
|
|
path: "{{ matrix_mautrix_whatsapp_base_path }}"
|
|
state: directory
|
|
mode: 0750
|
|
owner: "{{ matrix_user_username }}"
|
|
group: "{{ matrix_user_username }}"
|
|
|
|
- name: Check if a mautrix-whatsapp configuration file exists
|
|
stat:
|
|
path: "{{ matrix_mautrix_whatsapp_base_path }}/config.yaml"
|
|
register: mautrix_whatsapp_config_file_stat
|
|
|
|
- name: Ensure Matrix Mautrix whatsapp config installed
|
|
template:
|
|
src: "{{ role_path }}/templates//config.yaml.j2"
|
|
dest: "{{ matrix_mautrix_whatsapp_base_path }}/config.yaml"
|
|
mode: 0644
|
|
owner: "{{ matrix_user_username }}"
|
|
group: "{{ matrix_user_username }}"
|
|
when: "not mautrix_whatsapp_config_file_stat.stat.exists"
|
|
|
|
- name: Ensure matrix-mautrix-whatsapp.service installed
|
|
template:
|
|
src: "{{ role_path }}/templates/systemd/matrix-mautrix-whatsapp.service.j2"
|
|
dest: "/etc/systemd/system/matrix-mautrix-whatsapp.service"
|
|
mode: 0644
|
|
register: matrix_mautrix_whatsapp_systemd_service_result
|
|
|
|
- name: Ensure systemd reloaded after matrix-mautrix-whatsapp.service installation
|
|
service:
|
|
daemon_reload: yes
|
|
when: "matrix_mautrix_whatsapp_systemd_service_result.changed"
|
|
|
|
- name: Check if a mautrix-whatsapp registration file exists
|
|
stat:
|
|
path: "{{ matrix_mautrix_whatsapp_base_path }}/registration.yaml"
|
|
register: mautrix_whatsapp_registration_file_stat
|
|
|
|
- name: Generate matrix-mautrix-whatsapp registration.yaml if it doesn't exist
|
|
shell:
|
|
cmd: >-
|
|
/usr/bin/docker run
|
|
--rm
|
|
--user={{ matrix_user_uid }}:{{ matrix_user_gid }}
|
|
--cap-drop=ALL
|
|
--name matrix-mautrix-whatsapp-gen
|
|
-v {{ matrix_mautrix_whatsapp_base_path }}:/data:z
|
|
{{ matrix_mautrix_whatsapp_docker_image }}
|
|
/usr/bin/mautrix-whatsapp -g -c /data/config.yaml -r /data/registration.yaml
|
|
when: "not mautrix_whatsapp_registration_file_stat.stat.exists"
|
|
|
|
# If the matrix-synapse role is not used, these variables may not exist.
|
|
- set_fact:
|
|
matrix_synapse_container_extra_arguments: >
|
|
{{ matrix_synapse_container_extra_arguments|default([]) }}
|
|
+
|
|
{{ ["--mount type=bind,src={{ matrix_mautrix_whatsapp_base_path }}/registration.yaml,dst=/matrix-mautrix-whatsapp-registration.yaml,ro"] }}
|
|
|
|
matrix_synapse_app_service_config_files: >
|
|
{{ matrix_synapse_app_service_config_files|default([]) }}
|
|
+
|
|
{{ ["/matrix-mautrix-whatsapp-registration.yaml"] }}
|