mirror of
https://github.com/spantaleev/matrix-docker-ansible-deploy.git
synced 2024-11-14 10:04:46 +08:00
7d3adc4512
We do use some `:latest` images by default for the following services: - matrix-dimension - Goofys (in the matrix-synapse role) - matrix-bridge-appservice-irc - matrix-bridge-appservice-discord - matrix-bridge-mautrix-facebook - matrix-bridge-mautrix-whatsapp It's terribly unfortunate that those software projects don't release anything other than `:latest`, but that's how it is for now. Updating that software requires that users manually do `docker pull` on the server. The playbook didn't force-repull images that it already had. With this patch, it starts doing so. Any image tagged `:latest` will be force re-pulled by the playbook every time it's executed. It should be noted that even though we ask the `docker_image` module to force-pull, it only reports "changed" when it actually pulls something new. This is nice, because it lets people know exactly when something gets updated, as opposed to giving the indication that it's always updating the images (even though it isn't).
84 lines
3.3 KiB
YAML
84 lines
3.3 KiB
YAML
---
|
|
|
|
# This will throw a Permission Denied error if already mounted using fuse
|
|
- name: Check Synapse media store path
|
|
stat:
|
|
path: "{{ matrix_synapse_media_store_path }}"
|
|
register: local_path_media_store_stat
|
|
ignore_errors: yes
|
|
|
|
# This is separate and conditional, to ensure we don't execute it
|
|
# if the path already exists or we failed to check, because it's mounted using fuse.
|
|
- name: Ensure Synapse media store path exists
|
|
file:
|
|
path: "{{ matrix_synapse_media_store_path }}"
|
|
state: directory
|
|
mode: 0750
|
|
owner: "{{ matrix_user_username }}"
|
|
group: "{{ matrix_user_username }}"
|
|
when: "not local_path_media_store_stat.failed and not local_path_media_store_stat.stat.exists"
|
|
|
|
- name: Ensure Synapse Docker image is pulled
|
|
docker_image:
|
|
name: "{{ matrix_synapse_docker_image }}"
|
|
source: "{{ 'pull' if ansible_version.major > 2 or ansible_version.minor > 7 else omit }}"
|
|
force_source: "{{ matrix_synapse_docker_image_force_pull if ansible_version.major > 2 or ansible_version.minor >= 8 else omit }}"
|
|
force: "{{ omit if ansible_version.major > 2 or ansible_version.minor >= 8 else matrix_synapse_docker_image_force_pull }}"
|
|
|
|
- name: Check if a Synapse signing key exists
|
|
stat:
|
|
path: "{{ matrix_synapse_config_dir_path }}/{{ matrix_server_fqn_matrix }}.signing.key"
|
|
register: matrix_synapse_signing_key_stat
|
|
|
|
# We do this so that the signing key would get generated.
|
|
#
|
|
# This will also generate a default homeserver.yaml configuration file and a log configuration file.
|
|
# We don't care about those configuraiton files, as we replace them with our own anyway (see below).
|
|
#
|
|
# We don't use the `docker_container` module, because using it with `cap_drop` requires
|
|
# a very recent version, which is not available for a lot of people yet.
|
|
- name: Generate initial Synapse config and signing key
|
|
command: |
|
|
docker run
|
|
--rm
|
|
--name=matrix-config
|
|
--user={{ matrix_user_uid }}:{{ matrix_user_gid }}
|
|
--cap-drop=ALL
|
|
-v {{ matrix_synapse_config_dir_path }}:/data
|
|
-e SYNAPSE_CONFIG_PATH=/data/homeserver.yaml
|
|
-e SYNAPSE_SERVER_NAME={{ matrix_server_fqn_matrix }}
|
|
-e SYNAPSE_REPORT_STATS=no
|
|
{{ matrix_synapse_docker_image }}
|
|
generate
|
|
when: "not matrix_synapse_signing_key_stat.stat.exists"
|
|
|
|
- name: Ensure Synapse homeserver config installed
|
|
template:
|
|
src: "{{ matrix_synapse_template_synapse_homeserver }}"
|
|
dest: "{{ matrix_synapse_config_dir_path }}/homeserver.yaml"
|
|
mode: 0644
|
|
|
|
- name: Ensure Synapse log config installed
|
|
template:
|
|
src: "{{ matrix_synapse_template_synapse_log }}"
|
|
dest: "{{ matrix_synapse_config_dir_path }}/{{ matrix_server_fqn_matrix }}.log.config"
|
|
mode: 0644
|
|
|
|
- name: Ensure matrix-synapse.service installed
|
|
template:
|
|
src: "{{ role_path }}/templates/synapse/systemd/matrix-synapse.service.j2"
|
|
dest: "/etc/systemd/system/matrix-synapse.service"
|
|
mode: 0644
|
|
register: matrix_synapse_systemd_service_result
|
|
|
|
- name: Ensure systemd reloaded after matrix-synapse.service installation
|
|
service:
|
|
daemon_reload: yes
|
|
when: "matrix_synapse_systemd_service_result.changed"
|
|
|
|
- name: Ensure matrix-synapse-register-user script created
|
|
template:
|
|
src: "{{ role_path }}/templates/synapse/usr-local-bin/matrix-synapse-register-user.j2"
|
|
dest: "/usr/local/bin/matrix-synapse-register-user"
|
|
mode: 0750
|