--- - name: Ensure synapse user '{{ synapse_user }}' exists ansible.builtin.user: name: "{{ synapse_user }}" state: "present" system: true create_home: false groups: "{{ synapse_user_groups | default(omit, true) }}" append: "{{ (synapse_user_groups is defined) | ternary(true, omit) }}" register: synapse_user_info - name: Ensure directories for synapse are created ansible.builtin.file: path: "{{ item.path }}" state: "directory" mode: "{{ item.mode | default('0750') }}" owner: "{{ item.owner | default(synapse_user_info.uid | default(synapse_user)) }}" group: "{{ item.group | default(synapse_user_info.group | default(synapse_user)) }}" loop: - path: "{{ synapse_base_path }}" mode: "0755" - path: "{{ synapse_config_path }}" - path: "{{ synapse_data_path }}" - path: "{{ synapse_media_store_path }}" loop_control: label: "{{ item.path }}" - name: Ensure configuration files are templated ansible.builtin.copy: dest: "{{ config_file.path }}" content: "{{ config_file.content }}" mode: "{{ config_file.mode | default('0640') }}" owner: "{{ config_file.owner | default(synapse_user_info.uid | default(synapse_user)) }}" group: "{{ config_file.group | default(synapse_user_info.group | default(synapse_user)) }}" loop: >- {{ synapse_configs_to_write + synapse_configs | default([]) }} loop_control: loop_var: config_file label: "{{ config_file.path }}" vars: synapse_configs_to_write: - content: "{{ synapse_config | to_nice_yaml(width=1000) }}" path: "{{ synapse_homeserver_config_file }}" - content: "{{ synapse_log_config | to_nice_yaml(width=1000) }}" path: "{{ synapse_logging_config_file }}" - name: Ensure container image '{{ synapse_container_image_reference }}' is present on host community.docker.docker_image: name: "{{ synapse_container_image_reference }}" state: present source: pull force_source: "{{ synapse_container_image_tag is defined and synapse_container_image_tag }}" when: synapse_deployment_method == 'docker' register: synapse_container_image_info until: synapse_container_image_info is success retries: 10 delay: 5 - name: Ensure synapse container '{{ synapse_container_name }}' is in the desired state community.docker.docker_container: name: "{{ synapse_container_name }}" env: "{{ synapse_container_env | default(omit, true) }}" user: "{{ synapse_container_user | default(omit, true) }}" group: "{{ synapse_container_group | default(omit, true) }}" ports: "{{ synapse_container_ports | default(omit, true) }}" labels: "{{ synapse_container_labels | default(omit, true) }}" ulimits: "{{ synapse_container_ulimits | default(omit, true) }}" volumes: "{{ synapse_container_volumes | default(omit, true) }}" networks: "{{ synapse_container_networks | default(omit, true) }}" purge_networks: "{{ synapse_container_purge_networks | default(omit, true) }}" dns_servers: "{{ synapse_container_dns_servers | default(omit, true) }}" etc_hosts: "{{ synapse_container_etc_hosts | default(omit, true) }}" memory: "{{ synapse_container_memory | default(omit, true) }}" memory_reservation: "{{ synapse_container_memory_reservation | default(omit, true) }}" memory_swap: "{{ synapse_container_memory_swap | default(omit, true) }}" restart_policy: "{{ synapse_container_restart_policy }}" state: "{{ synapse_container_state }}"