Matrix Docker Ansible eploy
No puede seleccionar más de 25 temas Los temas deben comenzar con una letra o número, pueden incluir guiones ('-') y pueden tener hasta 35 caracteres de largo.
 
 

219 líneas
9.7 KiB

  1. # SPDX-FileCopyrightText: 2021 - 2023 Slavi Pantaleev
  2. # SPDX-FileCopyrightText: 2022 Marko Weltzer
  3. # SPDX-FileCopyrightText: 2022 Michael Hollister
  4. # SPDX-FileCopyrightText: 2024 Charles Wright
  5. #
  6. # SPDX-License-Identifier: AGPL-3.0-or-later
  7. ---
  8. # Below is a huge hack for dynamically building a list of workers and finally assigning it to `matrix_synapse_workers_enabled_list`.
  9. #
  10. # set_fact within a loop does not work reliably in Ansible (it only executes on the first iteration for some reason),
  11. # so we're forced to do something much uglier.
  12. - name: Build room workers
  13. ansible.builtin.set_fact:
  14. worker:
  15. id: "room-worker-{{ item }}"
  16. name: "matrix-synapse-worker-room-{{ item }}"
  17. type: 'room_worker'
  18. app: 'generic_worker'
  19. webserving: true
  20. port: "{{ matrix_synapse_workers_room_workers_port_range_start + item }}"
  21. metrics_port: "{{ matrix_synapse_workers_room_workers_metrics_range_start + item }}"
  22. register: "matrix_synapse_workers_list_results_room_workers"
  23. loop: "{{ range(0, matrix_synapse_workers_room_workers_count | int) | list }}"
  24. - name: Build client sync workers
  25. ansible.builtin.set_fact:
  26. worker:
  27. id: "sync-worker-{{ item }}"
  28. name: "matrix-synapse-worker-sync-{{ item }}"
  29. type: 'sync_worker'
  30. app: 'generic_worker'
  31. webserving: true
  32. port: "{{ matrix_synapse_workers_sync_workers_port_range_start + item }}"
  33. metrics_port: "{{ matrix_synapse_workers_sync_workers_metrics_range_start + item }}"
  34. register: "matrix_synapse_workers_list_results_sync_workers"
  35. loop: "{{ range(0, matrix_synapse_workers_sync_workers_count | int) | list }}"
  36. - name: Build client reader workers
  37. ansible.builtin.set_fact:
  38. worker:
  39. id: "client-reader-{{ item }}"
  40. name: "matrix-synapse-worker-client-reader-{{ item }}"
  41. type: 'client_reader'
  42. app: 'generic_worker'
  43. webserving: true
  44. port: "{{ matrix_synapse_workers_client_reader_workers_port_range_start + item }}"
  45. metrics_port: "{{ matrix_synapse_workers_client_reader_workers_metrics_range_start + item }}"
  46. register: "matrix_synapse_workers_list_results_client_reader_workers"
  47. loop: "{{ range(0, matrix_synapse_workers_client_reader_workers_count | int) | list }}"
  48. - name: Build federation reader workers
  49. ansible.builtin.set_fact:
  50. worker:
  51. id: "federation-reader-{{ item }}"
  52. name: "matrix-synapse-worker-federation-reader-{{ item }}"
  53. type: 'federation_reader'
  54. app: 'generic_worker'
  55. webserving: true
  56. port: "{{ matrix_synapse_workers_federation_reader_workers_port_range_start + item }}"
  57. metrics_port: "{{ matrix_synapse_workers_federation_reader_workers_metrics_range_start + item }}"
  58. register: "matrix_synapse_workers_list_results_federation_reader_workers"
  59. loop: "{{ range(0, matrix_synapse_workers_federation_reader_workers_count | int) | list }}"
  60. - name: Build generic workers
  61. ansible.builtin.set_fact:
  62. worker:
  63. id: "generic-worker-{{ item }}"
  64. name: "matrix-synapse-worker-generic-{{ item }}"
  65. type: 'generic_worker'
  66. app: 'generic_worker'
  67. webserving: true
  68. port: "{{ matrix_synapse_workers_generic_workers_port_range_start + item }}"
  69. metrics_port: "{{ matrix_synapse_workers_generic_workers_metrics_range_start + item }}"
  70. register: "matrix_synapse_workers_list_results_generic_workers"
  71. loop: "{{ range(0, matrix_synapse_workers_generic_workers_count | int) | list }}"
  72. - name: Build stream writer workers
  73. ansible.builtin.set_fact:
  74. worker:
  75. id: "stream-writer-{{ idx }}-{{ item.stream }}"
  76. # Names must not include underscores. Certain stream writer streams (to_device, account_data, ..) do, so we fix them up.
  77. name: "matrix-synapse-worker-stream-writer-{{ idx }}-{{ item.stream | replace('_', '-') }}"
  78. type: 'stream_writer'
  79. app: "generic_worker"
  80. webserving: "{{ item.stream in matrix_synapse_workers_webserving_stream_writer_types }}"
  81. stream_writer_stream: "{{ item.stream }}"
  82. port: "{{ matrix_synapse_workers_stream_writer_workers_http_port_range_start + idx }}"
  83. replication_port: "{{ matrix_synapse_workers_stream_writer_workers_replication_port_range_start + idx }}"
  84. metrics_port: "{{ matrix_synapse_workers_stream_writer_workers_metrics_range_start + idx }}"
  85. register: "matrix_synapse_workers_list_results_stream_writer_workers"
  86. loop: "{{ matrix_synapse_workers_stream_writers }}"
  87. loop_control:
  88. index_var: idx
  89. - name: Populate matrix_synapse_stream_writers from enabled stream writer workers list
  90. ansible.builtin.set_fact:
  91. matrix_synapse_stream_writers: "{{ matrix_synapse_stream_writers | combine({item.ansible_facts.worker.stream_writer_stream: [item.ansible_facts.worker.name]}, list_merge='append') }}"
  92. with_items: "{{ matrix_synapse_workers_list_results_stream_writer_workers.results }}"
  93. - name: Build federation sender workers
  94. ansible.builtin.set_fact:
  95. worker:
  96. id: "federation-sender-{{ item }}"
  97. name: "matrix-synapse-worker-federation-sender-{{ item }}"
  98. type: 'federation_sender'
  99. app: 'generic_worker'
  100. webserving: false
  101. port: 0
  102. metrics_port: "{{ matrix_synapse_workers_federation_sender_workers_metrics_range_start + item }}"
  103. register: "matrix_synapse_workers_list_results_federation_sender_workers"
  104. loop: "{{ range(0, matrix_synapse_workers_federation_sender_workers_count | int) | list }}"
  105. - name: Populate matrix_synapse_federation_sender_instances from enabled federation sender workers list
  106. ansible.builtin.set_fact:
  107. matrix_synapse_federation_sender_instances: "{{ matrix_synapse_federation_sender_instances + [item.ansible_facts.worker.name] }}"
  108. with_items: "{{ matrix_synapse_workers_list_results_federation_sender_workers.results }}"
  109. - name: Build pusher workers
  110. ansible.builtin.set_fact:
  111. worker:
  112. id: "pusher-{{ item }}"
  113. name: "matrix-synapse-worker-pusher-{{ item }}"
  114. type: 'pusher'
  115. app: 'generic_worker'
  116. webserving: false
  117. port: 0
  118. metrics_port: "{{ matrix_synapse_workers_pusher_workers_metrics_range_start + item }}"
  119. register: "matrix_synapse_workers_list_results_pusher_workers"
  120. loop: "{{ range(0, matrix_synapse_workers_pusher_workers_count | int) | list }}"
  121. # This type of worker can only have a count of 1, at most
  122. - name: Build appservice workers
  123. ansible.builtin.set_fact:
  124. worker:
  125. id: "appservice-{{ item }}"
  126. name: "matrix-synapse-worker-appservice-{{ item }}"
  127. type: 'appservice'
  128. app: 'generic_worker'
  129. webserving: false
  130. port: 0
  131. metrics_port: "{{ matrix_synapse_workers_appservice_workers_metrics_range_start + item }}"
  132. register: "matrix_synapse_workers_list_results_appservice_workers"
  133. loop: "{{ range(0, matrix_synapse_workers_appservice_workers_count | int) | list }}"
  134. # This type of worker can only have a count of 1, at most
  135. - name: Build user_dir workers
  136. ansible.builtin.set_fact:
  137. worker:
  138. id: "user-dir-{{ item }}"
  139. name: "matrix-synapse-worker-user-dir-{{ item }}"
  140. type: 'user_dir'
  141. app: 'generic_worker'
  142. webserving: true
  143. port: "{{ matrix_synapse_workers_user_dir_workers_port_range_start + item }}"
  144. metrics_port: "{{ matrix_synapse_workers_user_dir_workers_metrics_range_start + item }}"
  145. register: "matrix_synapse_workers_list_results_user_dir_workers"
  146. loop: "{{ range(0, matrix_synapse_workers_user_dir_workers_count | int) | list }}"
  147. # This type of worker can only have a count of 1, at most
  148. - name: Build background workers
  149. ansible.builtin.set_fact:
  150. worker:
  151. id: "background-{{ item }}"
  152. name: "matrix-synapse-worker-background-{{ item }}"
  153. type: 'background'
  154. app: 'generic_worker'
  155. webserving: false
  156. port: 0
  157. metrics_port: "{{ matrix_synapse_workers_background_workers_metrics_range_start + item }}"
  158. register: "matrix_synapse_workers_list_results_background_workers"
  159. loop: "{{ range(0, matrix_synapse_workers_background_workers_count | int) | list }}"
  160. - name: Build media_repository workers
  161. ansible.builtin.set_fact:
  162. worker:
  163. id: "media-repository-{{ item }}"
  164. name: "matrix-synapse-worker-media-repository-{{ item }}"
  165. type: 'media_repository'
  166. app: 'media_repository'
  167. webserving: true
  168. port: "{{ matrix_synapse_workers_media_repository_workers_port_range_start + item }}"
  169. metrics_port: "{{ matrix_synapse_workers_media_repository_workers_metrics_range_start + item }}"
  170. register: "matrix_synapse_workers_list_results_media_repository_workers"
  171. loop: "{{ range(0, matrix_synapse_workers_media_repository_workers_count | int) | list }}"
  172. - ansible.builtin.set_fact:
  173. matrix_synapse_dynamic_workers_list: "{{ matrix_synapse_dynamic_workers_list | default([]) + [item.ansible_facts.worker] }}"
  174. with_items: |
  175. {{
  176. matrix_synapse_workers_list_results_room_workers.results
  177. +
  178. matrix_synapse_workers_list_results_sync_workers.results
  179. +
  180. matrix_synapse_workers_list_results_client_reader_workers.results
  181. +
  182. matrix_synapse_workers_list_results_federation_reader_workers.results
  183. +
  184. matrix_synapse_workers_list_results_generic_workers.results
  185. +
  186. matrix_synapse_workers_list_results_stream_writer_workers.results
  187. +
  188. matrix_synapse_workers_list_results_federation_sender_workers.results
  189. +
  190. matrix_synapse_workers_list_results_pusher_workers.results
  191. +
  192. matrix_synapse_workers_list_results_appservice_workers.results
  193. +
  194. matrix_synapse_workers_list_results_user_dir_workers.results
  195. +
  196. matrix_synapse_workers_list_results_media_repository_workers.results
  197. +
  198. matrix_synapse_workers_list_results_background_workers.results
  199. }}
  200. - ansible.builtin.set_fact:
  201. matrix_synapse_workers_enabled_list: "{{ matrix_synapse_dynamic_workers_list }}"