mirror of
https://github.com/spantaleev/matrix-docker-ansible-deploy.git
synced 2024-12-25 18:38:30 +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.
92 lines
3.4 KiB
YAML
92 lines
3.4 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-irc role needs to execute before the matrix-synapse role.
|
|
when: "matrix_synapse_role_executed|default(False)"
|
|
|
|
- name: Ensure Appservice IRC image is pulled
|
|
docker_image:
|
|
name: "{{ matrix_appservice_irc_docker_image }}"
|
|
source: "{{ 'pull' if ansible_version.major > 2 or ansible_version.minor > 7 else omit }}"
|
|
|
|
- name: Ensure Appservice IRC base directory exists
|
|
file:
|
|
path: "{{ matrix_appservice_irc_base_path }}"
|
|
state: directory
|
|
mode: 0750
|
|
owner: "{{ matrix_user_username }}"
|
|
group: "{{ matrix_user_username }}"
|
|
|
|
- name: Ensure Matrix Appservice IRC config installed
|
|
copy:
|
|
content: "{{ matrix_appservice_irc_configuration|to_nice_yaml }}"
|
|
dest: "{{ matrix_appservice_irc_base_path }}/config.yaml"
|
|
mode: 0644
|
|
owner: "{{ matrix_user_username }}"
|
|
group: "{{ matrix_user_username }}"
|
|
|
|
- name: Check if matrix-appservice-irc passkey exists
|
|
stat:
|
|
path: "{{ matrix_appservice_irc_base_path }}/passkey.pem"
|
|
register: irc_passkey_file
|
|
|
|
- name: Generate matrix-appservice-irc passkey if it doesn't exist
|
|
shell: /usr/bin/openssl genpkey -out {{ matrix_appservice_irc_base_path }}/passkey.pem -outform PEM -algorithm RSA -pkeyopt rsa_keygen_bits:2048
|
|
when: "not irc_passkey_file.stat.exists"
|
|
|
|
- name: Ensure matrix-appservice-irc.service installed
|
|
template:
|
|
src: "{{ role_path }}/templates/systemd/matrix-appservice-irc.service.j2"
|
|
dest: "/etc/systemd/system/matrix-appservice-irc.service"
|
|
mode: 0644
|
|
register: matrix_appservice_irc_systemd_service_result
|
|
|
|
- name: Ensure systemd reloaded after matrix-appservice-irc.service installation
|
|
service:
|
|
daemon_reload: yes
|
|
when: "matrix_appservice_irc_systemd_service_result.changed"
|
|
|
|
- name: Check if a matrix-appservice-irc registration file exists
|
|
stat:
|
|
path: "{{ matrix_appservice_irc_base_path }}/registration.yaml"
|
|
register: appservice_irc_registration_file
|
|
|
|
- name: Generate matrix-appservice-irc registration.yaml if it doesn't exist
|
|
shell: >-
|
|
/usr/bin/docker run --rm --name matrix-appservice-irc-gen
|
|
--user={{ matrix_user_uid }}:{{ matrix_user_gid }} \
|
|
--cap-drop=ALL \
|
|
-v {{ matrix_appservice_irc_base_path }}:/data:z
|
|
{{ matrix_appservice_irc_docker_image }}
|
|
node app.js
|
|
-r
|
|
-f /data/registration.yaml
|
|
-u "http://matrix-appservice-irc:9999"
|
|
-c /data/config.yaml
|
|
-l irc_bot
|
|
when: "not appservice_irc_registration_file.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_irc_base_path }}/registration.yaml,dst=/matrix-appservice-irc-registration.yaml,ro"] }}
|
|
|
|
matrix_synapse_app_service_config_files: >
|
|
{{ matrix_synapse_app_service_config_files|default([]) }}
|
|
+
|
|
{{ ["/matrix-appservice-irc-registration.yaml"] }}
|
|
|
|
- name: Ensure IRC configuration directory permissions are correct
|
|
file:
|
|
path: "{{ matrix_appservice_irc_base_path }}"
|
|
state: directory
|
|
owner: "{{ matrix_user_username }}"
|
|
group: "{{ matrix_user_username }}"
|
|
recurse: true
|