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

151 строка
5.3 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. with_items:
  12. - path: "{{ matrix_element_call_base_path }}"
  13. - path: "{{ matrix_base_data_path }}/static-files/public/.well-known/element" # Directory for element.json
  14. # Ensure Configuration Files are in Place
  15. - name: Ensure Element Call config.json is in place
  16. ansible.builtin.template:
  17. src: "{{ role_path }}/templates/config.json.j2"
  18. dest: "{{ matrix_element_call_base_path }}/config.json"
  19. mode: 0640
  20. owner: "{{ matrix_user_username }}"
  21. group: "{{ matrix_user_groupname }}"
  22. - name: Ensure Redis redis.conf is in place
  23. ansible.builtin.template:
  24. src: "{{ role_path }}/templates/redis.conf.j2"
  25. dest: "{{ matrix_element_call_base_path }}/backend/redis.conf"
  26. mode: 0640
  27. owner: "{{ matrix_user_username }}"
  28. group: "{{ matrix_user_groupname }}"
  29. - name: Ensure matrix-element-call Docker labels file is in place
  30. ansible.builtin.template:
  31. src: "{{ role_path }}/templates/element-call-labels.j2"
  32. dest: "{{ matrix_element_call_base_path }}/element-call-labels"
  33. mode: 0640
  34. owner: "{{ matrix_user_username }}"
  35. group: "{{ matrix_user_groupname }}"
  36. # Ensure Docker Images are Pulled
  37. - name: Ensure matrix-element-call Docker image is pulled
  38. community.docker.docker_image:
  39. name: "{{ matrix_element_call_container_image }}"
  40. source: pull
  41. force_source: "{{ matrix_element_call_container_image_force_pull }}"
  42. register: element_call_image_result
  43. retries: "{{ devture_playbook_help_container_retries_count }}"
  44. delay: "{{ devture_playbook_help_container_retries_delay }}"
  45. until: element_call_image_result is not failed
  46. - name: Ensure redis Docker image is pulled
  47. community.docker.docker_image:
  48. name: "{{ redis_image }}"
  49. source: pull
  50. register: redis_image_result
  51. retries: 3
  52. delay: 10
  53. until: redis_image_result is not failed
  54. # Systemd Services for Element Call, JWT Service, LiveKit, and Redis
  55. - name: Ensure matrix-element-call systemd service is installed
  56. ansible.builtin.template:
  57. src: "{{ role_path }}/templates/systemd/matrix-element-call.service.j2"
  58. dest: "{{ devture_systemd_docker_base_systemd_path }}/matrix-element-call.service"
  59. mode: 0644
  60. - name: Ensure redis systemd service is installed
  61. ansible.builtin.template:
  62. src: "{{ role_path }}/templates/systemd/matrix-redis.service.j2"
  63. dest: "{{ devture_systemd_docker_base_systemd_path }}/matrix-redis.service"
  64. mode: 0644
  65. # Update homeserver.yaml for Element Call
  66. - name: Add listeners section for Element Call to homeserver.yaml
  67. ansible.builtin.blockinfile:
  68. path: "{{ matrix_homeserver_config_path }}"
  69. block: |
  70. listeners:
  71. - port: 8008
  72. tls: false
  73. type: http
  74. x_forwarded: true
  75. resources:
  76. - names: [client, federation, openid]
  77. compress: false
  78. marker: "# ANSIBLE MANAGED BLOCK - Element Call listeners"
  79. mode: '0644'
  80. owner: "{{ matrix_user_username }}"
  81. group: "{{ matrix_user_groupname }}"
  82. when: matrix_element_call_enabled | bool
  83. - name: Ensure serve_server_wellknown is enabled in homeserver.yaml
  84. ansible.builtin.lineinfile:
  85. path: "{{ matrix_homeserver_config_path }}"
  86. line: "serve_server_wellknown: true"
  87. insertafter: EOF
  88. state: present
  89. mode: '0644'
  90. owner: "{{ matrix_user_username }}"
  91. group: "{{ matrix_user_groupname }}"
  92. when: matrix_element_call_enabled | bool
  93. # Update the well-known client file for Element Call (adding RTC FOCI)
  94. - name: Update the existing well-known client file for Element Call (RTC FOCI)
  95. ansible.builtin.blockinfile:
  96. path: "{{ matrix_base_data_path }}/static-files/public/.well-known/matrix/client"
  97. block: |
  98. "org.matrix.msc4143.rtc_foci": [
  99. {
  100. "type": "livekit",
  101. "livekit_service_url": "{{ matrix_jwt_service_url }}"
  102. }
  103. ]
  104. marker: "# ANSIBLE MANAGED BLOCK - Element Call RTC FOCI"
  105. mode: '0644'
  106. owner: "{{ matrix_user_username }}"
  107. group: "{{ matrix_user_groupname }}"
  108. # Create .well-known/element/element.json for Element Call
  109. - name: Create the well-known element.json file
  110. ansible.builtin.template:
  111. src: "{{ role_path }}/templates/well_known_element.json.j2"
  112. dest: "{{ matrix_base_data_path }}/static-files/public/.well-known/element/element.json"
  113. mode: '0644'
  114. owner: "{{ matrix_user_username }}"
  115. group: "{{ matrix_user_groupname }}"
  116. # Update Element Web config.json with Element Call settings
  117. - name: Update Element Web config.json
  118. ansible.builtin.blockinfile:
  119. path: "{{ element_web_config_path }}"
  120. block: |
  121. "features": {
  122. "feature_video_rooms": true,
  123. "feature_new_room_decoration_ui": true,
  124. "feature_group_calls": true,
  125. "feature_element_call_video_rooms": true
  126. },
  127. "element_call": {
  128. "url": "https://{{ matrix_element_call_domain }}",
  129. "participant_limit": 8,
  130. "brand": "Element Call",
  131. "use_exclusively": true
  132. }
  133. marker: "# ANSIBLE MANAGED BLOCK - Element Call settings"
  134. mode: '0644'
  135. owner: "{{ matrix_user_username }}"
  136. group: "{{ matrix_user_groupname }}"