Matrix Docker Ansible eploy
Você não pode selecionar mais de 25 tópicos Os tópicos devem começar com uma letra ou um número, podem incluir traços ('-') e podem ter até 35 caracteres.
 
 

171 linhas
7.3 KiB

  1. # SPDX-FileCopyrightText: 2023 - 2024 Slavi Pantaleev
  2. # SPDX-FileCopyrightText: 2023 Johan Swetzén
  3. # SPDX-FileCopyrightText: 2024 - 2025 Suguru Hirahara
  4. # SPDX-FileCopyrightText: 2024 David Mehren
  5. #
  6. # SPDX-License-Identifier: AGPL-3.0-or-later
  7. ---
  8. # If the matrix-synapse role is not used, `matrix_synapse_role_executed` won't exist.
  9. # We don't want to fail in such cases.
  10. - name: Fail if matrix-synapse role already executed
  11. ansible.builtin.fail:
  12. msg: >-
  13. The matrix-bridge-mautrix-wsproxy role needs to execute before the matrix-synapse role.
  14. when: "matrix_synapse_role_executed|default(False)"
  15. - ansible.builtin.set_fact:
  16. matrix_mautrix_wsproxy_migration_requires_restart: false
  17. - ansible.builtin.set_fact:
  18. matrix_mautrix_wsproxy_syncproxy_migration_requires_restart: false
  19. - name: Ensure Mautrix wsproxy paths exist
  20. ansible.builtin.file:
  21. path: "{{ item.path }}"
  22. state: directory
  23. mode: '0750'
  24. owner: "{{ matrix_user_name }}"
  25. group: "{{ matrix_group_name }}"
  26. with_items:
  27. - path: "{{ matrix_mautrix_wsproxy_base_path }}"
  28. when: true
  29. when: item.when | bool
  30. - name: Ensure Mautrix wsproxy support files installed
  31. ansible.builtin.template:
  32. src: "{{ role_path }}/templates/{{ item }}.j2"
  33. dest: "{{ matrix_mautrix_wsproxy_base_path }}/{{ item }}"
  34. mode: '0640'
  35. owner: "{{ matrix_user_name }}"
  36. group: "{{ matrix_group_name }}"
  37. with_items:
  38. - syncproxy-env
  39. - wsproxy-labels
  40. register: matrix_mautrix_wsproxy_support_files_result
  41. - name: Ensure Mautrix wsproxy image is pulled
  42. community.docker.docker_image:
  43. name: "{{ matrix_mautrix_wsproxy_docker_image }}"
  44. source: "{{ 'pull' if ansible_version.major > 2 or ansible_version.minor > 7 else omit }}"
  45. force_source: "{{ matrix_mautrix_wsproxy_docker_image_force_pull if ansible_version.major > 2 or ansible_version.minor >= 8 else omit }}"
  46. force: "{{ omit if ansible_version.major > 2 or ansible_version.minor >= 8 else matrix_mautrix_wsproxy_docker_image_force_pull }}"
  47. register: matrix_mautrix_wsproxy_container_image_pull_result
  48. - name: Ensure Mautrix syncproxy image is pulled
  49. community.docker.docker_image:
  50. name: "{{ matrix_mautrix_wsproxy_syncproxy_docker_image }}"
  51. source: "{{ 'pull' if ansible_version.major > 2 or ansible_version.minor > 7 else omit }}"
  52. force_source: "{{ matrix_mautrix_wsproxy_syncproxy_docker_image_force_pull if ansible_version.major > 2 or ansible_version.minor >= 8 else omit }}"
  53. force: "{{ omit if ansible_version.major > 2 or ansible_version.minor >= 8 else matrix_mautrix_wsproxy_syncproxy_docker_image_force_pull }}"
  54. register: matrix_mautrix_wsproxy_syncproxy_container_image_pull_result
  55. - name: Ensure Mautrix wsproxy paths exists
  56. ansible.builtin.file:
  57. path: "{{ item }}"
  58. state: directory
  59. mode: '0750'
  60. owner: "{{ matrix_user_name }}"
  61. group: "{{ matrix_group_name }}"
  62. with_items:
  63. - "{{ matrix_mautrix_wsproxy_base_path }}"
  64. - "{{ matrix_mautrix_wsproxy_config_path }}"
  65. - name: Check if an old Matrix state file exists
  66. ansible.builtin.stat:
  67. path: "{{ matrix_mautrix_wsproxy_base_path }}/mx-state.json"
  68. register: matrix_mautrix_wsproxy_stat_mx_state
  69. - name: Ensure mautrix-wsproxy config.yaml installed
  70. ansible.builtin.copy:
  71. content: "{{ matrix_mautrix_wsproxy_configuration | to_nice_yaml }}"
  72. dest: "{{ matrix_mautrix_wsproxy_config_path }}/config.yaml"
  73. mode: '0644'
  74. owner: "{{ matrix_user_name }}"
  75. group: "{{ matrix_group_name }}"
  76. register: matrix_mautrix_wsproxy_config_result
  77. - name: Ensure mautrix-androidsms registration.yaml installed
  78. ansible.builtin.copy:
  79. content: "{{ matrix_mautrix_androidsms_registration | to_nice_yaml }}"
  80. dest: "{{ matrix_mautrix_wsproxy_config_path }}/androidsms-registration.yaml"
  81. mode: '0644'
  82. owner: "{{ matrix_user_name }}"
  83. group: "{{ matrix_group_name }}"
  84. register: matrix_mautrix_wsproxy_registration_androidsms_result
  85. - name: Ensure mautrix-imessage registration.yaml installed
  86. ansible.builtin.copy:
  87. content: "{{ matrix_mautrix_imessage_registration | to_nice_yaml }}"
  88. dest: "{{ matrix_mautrix_wsproxy_config_path }}/imessage-registration.yaml"
  89. mode: '0644'
  90. owner: "{{ matrix_user_name }}"
  91. group: "{{ matrix_group_name }}"
  92. register: matrix_mautrix_wsproxy_registration_imessage_result
  93. - name: Ensure mautrix-wsproxy container network is created
  94. community.general.docker_network:
  95. enable_ipv6: "{{ devture_systemd_docker_base_ipv6_enabled }}"
  96. name: "{{ matrix_mautrix_wsproxy_container_network }}"
  97. driver: bridge
  98. driver_options: "{{ devture_systemd_docker_base_container_networks_driver_options }}"
  99. - name: Ensure matrix-mautrix-wsproxy.service installed
  100. ansible.builtin.template:
  101. src: "{{ role_path }}/templates/systemd/matrix-mautrix-wsproxy.service.j2"
  102. dest: "{{ devture_systemd_docker_base_systemd_path }}/matrix-mautrix-wsproxy.service"
  103. mode: '0644'
  104. register: matrix_mautrix_wsproxy_systemd_service_result
  105. - name: Determine whether Mautrix wsproxy needs a restart
  106. ansible.builtin.set_fact:
  107. matrix_mautrix_wsproxy_restart_necessary: >-
  108. {{
  109. matrix_mautrix_wsproxy_migration_requires_restart | default(false)
  110. or matrix_mautrix_wsproxy_support_files_result.changed | default(false)
  111. or matrix_mautrix_wsproxy_config_result.changed | default(false)
  112. or matrix_mautrix_wsproxy_registration_androidsms_result.changed | default(false)
  113. or matrix_mautrix_wsproxy_registration_imessage_result.changed | default(false)
  114. or matrix_mautrix_wsproxy_systemd_service_result.changed | default(false)
  115. or matrix_mautrix_wsproxy_container_image_pull_result.changed | default(false)
  116. }}
  117. - name: Ensure systemd reloaded after matrix-mautrix-wsproxy.service installation
  118. ansible.builtin.service:
  119. daemon_reload: true
  120. when: "matrix_mautrix_wsproxy_systemd_service_result.changed"
  121. - name: Ensure matrix-mautrix-wsproxy.service restarted, if necessary
  122. ansible.builtin.service:
  123. name: "matrix-mautrix-wsproxy.service"
  124. state: restarted
  125. when: "matrix_mautrix_wsproxy_migration_requires_restart|bool"
  126. - name: Ensure matrix-mautrix-wsproxy-syncproxy.service installed
  127. ansible.builtin.template:
  128. src: "{{ role_path }}/templates/systemd/matrix-mautrix-wsproxy-syncproxy.service.j2"
  129. dest: "{{ devture_systemd_docker_base_systemd_path }}/matrix-mautrix-wsproxy-syncproxy.service"
  130. mode: '0644'
  131. register: matrix_mautrix_wsproxy_syncproxy_systemd_service_result
  132. - name: Determine whether Mautrix wsproxy syncproxy needs a restart
  133. ansible.builtin.set_fact:
  134. matrix_mautrix_wsproxy_syncproxy_restart_necessary: >-
  135. {{
  136. matrix_mautrix_wsproxy_syncproxy_migration_requires_restart | default(false)
  137. or matrix_mautrix_wsproxy_syncproxy_systemd_service_result.changed | default(false)
  138. or matrix_mautrix_wsproxy_syncproxy_container_image_pull_result.changed | default(false)
  139. }}
  140. - name: Ensure systemd reloaded after matrix-mautrix-wsproxy-syncproxy.service installation
  141. ansible.builtin.service:
  142. daemon_reload: true
  143. when: "matrix_mautrix_wsproxy_syncproxy_systemd_service_result.changed"
  144. - name: Ensure matrix-mautrix-wsproxy-syncproxy.service restarted, if necessary
  145. ansible.builtin.service:
  146. name: "matrix-mautrix-wsproxy-syncproxy.service"
  147. state: restarted
  148. when: "matrix_mautrix_wsproxy_syncproxy_migration_requires_restart|bool"