mirror of
https://github.com/spantaleev/matrix-docker-ansible-deploy.git
synced 2024-12-25 02:18:31 +01:00
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.
91 lines
3.5 KiB
YAML
91 lines
3.5 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-appservice-discord role needs to execute before the matrix-synapse role.
|
|
when: "matrix_synapse_role_executed|default(False)"
|
|
|
|
- name: Ensure Appservice Discord image is pulled
|
|
docker_image:
|
|
name: "{{ matrix_appservice_discord_docker_image }}"
|
|
source: "{{ 'pull' if ansible_version.major > 2 or ansible_version.minor > 7 else omit }}"
|
|
|
|
- name: Ensure Appservice Discord base directory exists
|
|
file:
|
|
path: "{{ matrix_appservice_discord_base_path }}"
|
|
state: directory
|
|
mode: 0750
|
|
owner: "{{ matrix_user_username }}"
|
|
group: "{{ matrix_user_username }}"
|
|
|
|
- name: Ensure Matrix Appservice Discord config installed
|
|
copy:
|
|
content: "{{ matrix_appservice_discord_configuration|to_nice_yaml }}"
|
|
dest: "{{ matrix_appservice_discord_base_path }}/config.yaml"
|
|
mode: 0644
|
|
owner: "{{ matrix_user_username }}"
|
|
group: "{{ matrix_user_username }}"
|
|
|
|
- name: Ensure matrix-appservice-discord.service installed
|
|
template:
|
|
src: "{{ role_path }}/templates/systemd/matrix-appservice-discord.service.j2"
|
|
dest: "/etc/systemd/system/matrix-appservice-discord.service"
|
|
mode: 0644
|
|
register: matrix_appservice_discord_systemd_service_result
|
|
|
|
- name: Ensure systemd reloaded after matrix-appservice-discord.service installation
|
|
service:
|
|
daemon_reload: yes
|
|
when: "matrix_appservice_discord_systemd_service_result.changed"
|
|
|
|
- name: Check if a matrix-appservice-discord registration file exists
|
|
stat:
|
|
path: "{{ matrix_appservice_discord_base_path }}/discord-registration.yaml"
|
|
register: appservice_discord_registration_file
|
|
|
|
- name: Generate matrix-appservice-discord discord-registration.yaml if it doesn't exist
|
|
shell: >-
|
|
/usr/bin/docker run --rm --name matrix-appservice-discord-gen
|
|
--user={{ matrix_user_uid }}:{{ matrix_user_gid }}
|
|
--cap-drop=ALL
|
|
-v {{ matrix_appservice_discord_base_path }}:/data:z
|
|
{{ matrix_appservice_discord_docker_image }}
|
|
node build/src/discordas.js
|
|
-r
|
|
-u "http://matrix-appservice-discord:9005"
|
|
-c /data/config.yaml
|
|
-f /data/discord-registration.yaml
|
|
-l discord_bot
|
|
when: "not appservice_discord_registration_file.stat.exists"
|
|
|
|
- name: Check if a matrix-appservice-discord invite_link file exists
|
|
stat:
|
|
path: "{{ matrix_appservice_discord_base_path }}/invite_link"
|
|
register: appservice_discord_link_generated
|
|
|
|
- name: Generate your discord invite link
|
|
shell: >-
|
|
/usr/bin/docker run --rm --name matrix-appservice-discord-link-gen
|
|
--user={{ matrix_user_uid }}:{{ matrix_user_gid }}
|
|
--cap-drop=ALL
|
|
-v {{ matrix_appservice_discord_base_path }}:/data
|
|
-w /data
|
|
{{ matrix_appservice_discord_docker_image }}
|
|
/bin/sh -c "node .././build/tools/addbot.js > invite_link"
|
|
when: "not appservice_discord_link_generated.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_appservice_discord_base_path }}/discord-registration.yaml,dst=/matrix-appservice-discord-registration.yaml,ro"] }}
|
|
|
|
matrix_synapse_app_service_config_files: >
|
|
{{ matrix_synapse_app_service_config_files|default([]) }}
|
|
+
|
|
{{ ["/matrix-appservice-discord-registration.yaml"] }}
|