mirror of
https://github.com/spantaleev/matrix-docker-ansible-deploy.git
synced 2024-11-10 20:57:41 +01:00
eeca3c8dca
The `to_nice_yaml` helper will by default wrap any string YAML values on the first space after column 80. This can in worst case yield invalid YAML syntax. More details in Ansible's documentation here: https://docs.ansible.com/ansible/latest/user_guide/playbooks_filters.html#formatting-data-yaml-and-json In short, you need to explicitly provide a custom width argument of a high number of some kind to avoid the line wrapping.
116 lines
4.8 KiB
YAML
116 lines
4.8 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: true
|
|
|
|
# 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_groupname }}"
|
|
when: "not local_path_media_store_stat.failed and not local_path_media_store_stat.stat.exists"
|
|
|
|
- block:
|
|
- name: Ensure Synapse repository is present on self-build
|
|
git:
|
|
repo: "{{ matrix_synapse_container_image_self_build_repo }}"
|
|
dest: "{{ matrix_synapse_docker_src_files_path }}"
|
|
version: "{{ matrix_synapse_docker_image.split(':')[1] }}"
|
|
force: "yes"
|
|
register: matrix_synapse_git_pull_results
|
|
|
|
- name: Check if Synapse Docker image exists
|
|
command: "{{ matrix_host_command_docker }} images --quiet --filter 'reference={{ matrix_synapse_docker_image }}'"
|
|
register: matrix_synapse_docker_image_check_result
|
|
|
|
# Invoking the `docker build` command here, instead of calling the `docker_image` Ansible module,
|
|
# because the latter does not support BuildKit.
|
|
# See: https://github.com/ansible-collections/community.general/issues/514
|
|
- name: Ensure Synapse Docker image is built
|
|
shell:
|
|
chdir: "{{ matrix_synapse_docker_src_files_path }}"
|
|
cmd: |
|
|
{{ matrix_host_command_docker }} build \
|
|
-t "{{ matrix_synapse_docker_image }}" \
|
|
-f docker/Dockerfile \
|
|
.
|
|
environment:
|
|
DOCKER_BUILDKIT: 1
|
|
when: "matrix_synapse_git_pull_results.changed|bool or matrix_synapse_docker_image_check_result.stdout == ''"
|
|
when: "matrix_synapse_container_image_self_build|bool"
|
|
|
|
- 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 }}"
|
|
when: "not matrix_synapse_container_image_self_build"
|
|
|
|
- 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 configuration 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 docker-py 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
|
|
--mount type=bind,src={{ matrix_synapse_config_dir_path }},dst=/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
|
|
copy:
|
|
content: "{{ matrix_synapse_configuration|to_nice_yaml(indent=2, width=999999) }}"
|
|
dest: "{{ matrix_synapse_config_dir_path }}/homeserver.yaml"
|
|
mode: 0644
|
|
owner: "{{ matrix_user_username }}"
|
|
group: "{{ matrix_user_groupname }}"
|
|
|
|
- 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: "{{ matrix_systemd_path }}/matrix-synapse.service"
|
|
mode: 0644
|
|
register: matrix_synapse_systemd_service_result
|
|
|
|
- name: Ensure systemd reloaded after matrix-synapse.service installation
|
|
service:
|
|
daemon_reload: true
|
|
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: "{{ matrix_local_bin_path }}/matrix-synapse-register-user"
|
|
mode: 0755
|