Matrix Docker Ansible eploy
Вы не можете выбрать более 25 тем Темы должны начинаться с буквы или цифры, могут содержать дефисы(-) и должны содержать не более 35 символов.

192 строки
6.7 KiB

  1. ---
  2. # roles/custom/matrix-element-call/tasks/install.yml
  3. # Ensure Required Directories Exist
  4. - name: Ensure matrix-element-call paths exist
  5. ansible.builtin.file:
  6. path: "{{ item.path }}"
  7. state: directory
  8. mode: 0750
  9. owner: "{{ matrix_user_username }}"
  10. group: "{{ matrix_user_groupname }}"
  11. loop:
  12. - path: "{{ matrix_element_call_base_path }}"
  13. - path: "{{ matrix_element_call_base_path }}/data"
  14. - path: "{{ matrix_element_call_base_path }}/config"
  15. - path: "{{ matrix_element_call_base_path }}/backend" # For LiveKit and Redis config
  16. # Ensure Configuration Files are in Place
  17. - name: Ensure Element Call config.json is in place
  18. ansible.builtin.template:
  19. src: "{{ role_path }}/templates/config.json.j2"
  20. dest: "{{ matrix_element_call_base_path }}/config/config.json"
  21. mode: 0640
  22. owner: "{{ matrix_user_username }}"
  23. group: "{{ matrix_user_groupname }}"
  24. - name: Ensure LiveKit livekit.yaml is in place
  25. ansible.builtin.template:
  26. src: "{{ role_path }}/templates/livekit.yaml.j2"
  27. dest: "{{ matrix_element_call_base_path }}/backend/livekit.yaml"
  28. mode: 0640
  29. owner: "{{ matrix_user_username }}"
  30. group: "{{ matrix_user_groupname }}"
  31. - name: Ensure Redis redis.conf is in place
  32. ansible.builtin.template:
  33. src: "{{ role_path }}/templates/redis.conf.j2"
  34. dest: "{{ matrix_element_call_base_path }}/backend/redis.conf"
  35. mode: 0640
  36. owner: "{{ matrix_user_username }}"
  37. group: "{{ matrix_user_groupname }}"
  38. - name: Ensure matrix-element-call environment file is in place
  39. ansible.builtin.template:
  40. src: "{{ role_path }}/templates/env.j2"
  41. dest: "{{ matrix_element_call_base_path }}/config/env"
  42. mode: 0640
  43. owner: "{{ matrix_user_username }}"
  44. group: "{{ matrix_user_groupname }}"
  45. - name: Ensure matrix-element-call Docker labels file is in place
  46. ansible.builtin.template:
  47. src: "{{ role_path }}/templates/labels.j2"
  48. dest: "{{ matrix_element_call_base_path }}/config/labels"
  49. mode: 0640
  50. owner: "{{ matrix_user_username }}"
  51. group: "{{ matrix_user_groupname }}"
  52. # Ensure Docker Images are Pulled
  53. - name: Ensure matrix-element-call Docker image is pulled
  54. community.docker.docker_image:
  55. name: "{{ matrix_element_call_container_image }}"
  56. source: pull
  57. force_source: "{{ matrix_element_call_container_image_force_pull }}"
  58. register: element_call_image_result
  59. retries: "{{ devture_playbook_help_container_retries_count }}"
  60. delay: "{{ devture_playbook_help_container_retries_delay }}"
  61. until: element_call_image_result is not failed
  62. - name: Ensure jwt-service Docker image is pulled
  63. community.docker.docker_image:
  64. name: "{{ matrix_jwt_service_image }}"
  65. source: pull
  66. register: jwt_image_result
  67. retries: 3
  68. delay: 10
  69. until: jwt_image_result is not failed
  70. - name: Ensure livekit Docker image is pulled
  71. community.docker.docker_image:
  72. name: "{{ matrix_livekit_image }}"
  73. source: pull
  74. register: livekit_image_result
  75. retries: 3
  76. delay: 10
  77. until: livekit_image_result is not failed
  78. - name: Ensure redis Docker image is pulled
  79. community.docker.docker_image:
  80. name: "{{ matrix_redis_image }}"
  81. source: pull
  82. register: redis_image_result
  83. retries: 3
  84. delay: 10
  85. until: redis_image_result is not failed
  86. # Systemd Services for Element Call, JWT Service, LiveKit, and Redis
  87. - name: Ensure matrix-element-call systemd service is installed
  88. ansible.builtin.template:
  89. src: "{{ role_path }}/templates/systemd/matrix-element-call.service.j2"
  90. dest: "{{ devture_systemd_docker_base_systemd_path }}/matrix-element-call.service"
  91. mode: 0644
  92. - name: Ensure jwt-service systemd service is installed
  93. ansible.builtin.template:
  94. src: "{{ role_path }}/templates/systemd/matrix-jwt-service.service.j2"
  95. dest: "{{ devture_systemd_docker_base_systemd_path }}/matrix-jwt-service.service"
  96. mode: 0644
  97. - name: Ensure livekit systemd service is installed
  98. ansible.builtin.template:
  99. src: "{{ role_path }}/templates/systemd/matrix-livekit.service.j2"
  100. dest: "{{ devture_systemd_docker_base_systemd_path }}/matrix-livekit.service"
  101. mode: 0644
  102. - name: Ensure redis systemd service is installed
  103. ansible.builtin.template:
  104. src: "{{ role_path }}/templates/systemd/matrix-redis.service.j2"
  105. dest: "{{ devture_systemd_docker_base_systemd_path }}/matrix-redis.service"
  106. mode: 0644
  107. # Update homeserver.yaml for Element Call
  108. - name: Add listeners section for Element Call to homeserver.yaml
  109. ansible.builtin.blockinfile:
  110. path: "{{ matrix_homeserver_config_path }}"
  111. block: |
  112. listeners:
  113. - port: 8008
  114. tls: false
  115. type: http
  116. x_forwarded: true
  117. resources:
  118. - names: [client, federation, openid]
  119. compress: false
  120. marker: "# ANSIBLE MANAGED BLOCK - Element Call listeners"
  121. mode: '0644'
  122. owner: "{{ matrix_user_username }}"
  123. group: "{{ matrix_user_groupname }}"
  124. when: matrix_element_call_enabled | bool
  125. - name: Ensure serve_server_wellknown is enabled in homeserver.yaml
  126. ansible.builtin.lineinfile:
  127. path: "{{ matrix_homeserver_config_path }}"
  128. line: "serve_server_wellknown: true"
  129. insertafter: EOF
  130. state: present
  131. mode: '0644'
  132. owner: "{{ matrix_user_username }}"
  133. group: "{{ matrix_user_groupname }}"
  134. when: matrix_element_call_enabled | bool
  135. # Update the .well-known/matrix/client file
  136. - name: Update the well-known client file
  137. ansible.builtin.template:
  138. src: "{{ role_path }}/templates/well_known_client.json.j2"
  139. dest: "{{ matrix_base_data_path }}/static-files/public/.well-known/matrix/client"
  140. mode: '0644'
  141. owner: "{{ matrix_user_username }}"
  142. group: "{{ matrix_user_groupname }}"
  143. # Create .well-known/element/element.json for Element Call
  144. - name: Create the well-known element.json file
  145. ansible.builtin.template:
  146. src: "{{ role_path }}/templates/well_known_element.json.j2"
  147. dest: "{{ matrix_base_data_path }}/static-files/public/.well-known/element/element.json"
  148. mode: '0644'
  149. owner: "{{ matrix_user_username }}"
  150. group: "{{ matrix_user_groupname }}"
  151. # Update Element Web config.json with Element Call settings
  152. - name: Update Element Web config.json
  153. ansible.builtin.blockinfile:
  154. path: "{{ element_web_config_path }}"
  155. block: |
  156. "features": {
  157. "feature_video_rooms": true,
  158. "feature_new_room_decoration_ui": true,
  159. "feature_group_calls": true,
  160. "feature_element_call_video_rooms": true
  161. },
  162. "element_call": {
  163. "url": "https://{{ matrix_element_call_domain }}",
  164. "participant_limit": 8,
  165. "brand": "Element Call",
  166. "use_exclusively": true
  167. }
  168. marker: "# ANSIBLE MANAGED BLOCK - Element Call settings"
  169. mode: '0644'
  170. owner: "{{ matrix_user_username }}"
  171. group: "{{ matrix_user_groupname }}"