Matrix Docker Ansible eploy
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 

167 line
5.7 KiB

  1. ---
  2. # Ensure Required Directories Exist
  3. - name: Ensure matrix-element-call paths exist
  4. ansible.builtin.file:
  5. path: "{{ item.path }}"
  6. state: directory
  7. mode: 0750
  8. owner: "{{ matrix_user_username }}"
  9. group: "{{ matrix_user_groupname }}"
  10. loop:
  11. - path: "{{ matrix_element_call_base_path }}"
  12. - path: "{{ matrix_element_call_base_path }}/data"
  13. - path: "{{ matrix_element_call_base_path }}/config"
  14. - path: "{{ matrix_element_call_base_path }}/backend" # For LiveKit and Redis config
  15. # Ensure Configuration Files are in Place
  16. - name: Ensure Element Call config.json is in place
  17. ansible.builtin.template:
  18. src: "{{ role_path }}/templates/config.json.j2"
  19. dest: "{{ matrix_element_call_base_path }}/config/config.json"
  20. mode: 0640
  21. owner: "{{ matrix_user_username }}"
  22. group: "{{ matrix_user_groupname }}"
  23. - name: Ensure LiveKit livekit.yaml is in place
  24. ansible.builtin.template:
  25. src: "{{ role_path }}/templates/livekit.yaml.j2"
  26. dest: "{{ matrix_element_call_base_path }}/backend/livekit.yaml"
  27. mode: 0640
  28. owner: "{{ matrix_user_username }}"
  29. group: "{{ matrix_user_groupname }}"
  30. - name: Ensure Redis redis.conf is in place
  31. ansible.builtin.template:
  32. src: "{{ role_path }}/templates/redis.conf.j2"
  33. dest: "{{ matrix_element_call_base_path }}/backend/redis.conf"
  34. mode: 0640
  35. owner: "{{ matrix_user_username }}"
  36. group: "{{ matrix_user_groupname }}"
  37. - name: Ensure matrix-element-call environment file is in place
  38. ansible.builtin.template:
  39. src: "{{ role_path }}/templates/env.j2"
  40. dest: "{{ matrix_element_call_base_path }}/config/env"
  41. mode: 0640
  42. owner: "{{ matrix_user_username }}"
  43. group: "{{ matrix_user_groupname }}"
  44. - name: Ensure matrix-element-call Docker labels file is in place
  45. ansible.builtin.template:
  46. src: "{{ role_path }}/templates/labels.j2"
  47. dest: "{{ matrix_element_call_base_path }}/config/labels"
  48. mode: 0640
  49. owner: "{{ matrix_user_username }}"
  50. group: "{{ matrix_user_groupname }}"
  51. # Ensure Docker Images are Pulled
  52. - name: Ensure matrix-element-call Docker image is pulled
  53. community.docker.docker_image:
  54. name: "{{ matrix_element_call_image }}"
  55. source: pull
  56. force_source: "{{ matrix_element_call_container_image_force_pull }}"
  57. register: element_call_image_result
  58. retries: "{{ devture_playbook_help_container_retries_count }}"
  59. delay: "{{ devture_playbook_help_container_retries_delay }}"
  60. until: element_call_image_result is not failed
  61. - name: Ensure jwt-service Docker image is pulled
  62. community.docker.docker_image:
  63. name: "ghcr.io/element-hq/lk-jwt-service:latest-ci"
  64. source: pull
  65. register: jwt_image_result
  66. retries: 3
  67. delay: 10
  68. until: jwt_image_result is not failed
  69. - name: Ensure livekit Docker image is pulled
  70. community.docker.docker_image:
  71. name: "livekit/livekit-server:latest"
  72. source: pull
  73. register: livekit_image_result
  74. retries: 3
  75. delay: 10
  76. until: livekit_image_result is not failed
  77. - name: Ensure redis Docker image is pulled
  78. community.docker.docker_image:
  79. name: "redis:6-alpine"
  80. source: pull
  81. register: redis_image_result
  82. retries: 3
  83. delay: 10
  84. until: redis_image_result is not failed
  85. - name: Debug matrix_element_call_base_path
  86. ansible.builtin.debug:
  87. var: matrix_element_call_base_path
  88. - name: Debug labels file content
  89. ansible.builtin.debug:
  90. msg: "{{ lookup('file', matrix_element_call_base_path ~ '/config/labels') | from_yaml }}"
  91. # Ensure Docker Containers are Running
  92. - name: Run matrix-element-call Docker container
  93. community.docker.docker_container:
  94. name: "matrix-element-call"
  95. image: "{{ matrix_element_call_image }}"
  96. state: started
  97. restart_policy: unless-stopped
  98. env_file: "{{ matrix_element_call_base_path }}/config/env"
  99. labels: "{{ lookup('file', matrix_element_call_base_path ~ '/config/labels') | from_yaml }}"
  100. networks:
  101. - name: "{{ matrix_element_call_container_network }}"
  102. volumes:
  103. - "{{ matrix_element_call_base_path }}/config/config.json:/app/config.json"
  104. - "{{ matrix_element_call_base_path }}/data:/data"
  105. - name: Run jwt-service Docker container
  106. community.docker.docker_container:
  107. name: "matrix-jwt-service"
  108. image: "ghcr.io/element-hq/lk-jwt-service:latest-ci"
  109. state: started
  110. restart_policy: unless-stopped
  111. environment:
  112. LIVEKIT_SECRET: "{{ matrix_element_call_livekit_dev_key }}" # User-specified key
  113. LIVEKIT_URL: "{{ matrix_element_call_livekit_service_url }}"
  114. LIVEKIT_KEY: "devkey"
  115. networks:
  116. - name: "{{ matrix_element_call_container_network }}"
  117. - name: Run livekit Docker container
  118. community.docker.docker_container:
  119. name: "matrix-livekit"
  120. image: "livekit/livekit-server:latest"
  121. state: started
  122. restart_policy: unless-stopped
  123. command: "--dev --config /etc/livekit.yaml"
  124. volumes:
  125. - "{{ matrix_element_call_base_path }}/backend/livekit.yaml:/etc/livekit.yaml"
  126. network_mode: "host"
  127. - name: Run redis Docker container
  128. community.docker.docker_container:
  129. name: "matrix-redis"
  130. image: "redis:6-alpine"
  131. state: started
  132. restart_policy: unless-stopped
  133. command: redis-server /etc/redis.conf
  134. volumes:
  135. - "{{ matrix_element_call_base_path }}/backend/redis.conf:/etc/redis.conf"
  136. networks:
  137. - name: "{{ matrix_element_call_container_network }}"
  138. # Ensure Systemd Services are Set Up
  139. - name: Ensure matrix-element-call systemd service is installed
  140. ansible.builtin.template:
  141. src: "{{ role_path }}/templates/element-call.service.j2"
  142. dest: "{{ devture_systemd_docker_base_systemd_path }}/matrix-element-call.service"
  143. mode: 0644
  144. - name: Ensure matrix-element-call systemd service is enabled and started
  145. ansible.builtin.systemd:
  146. name: matrix-element-call
  147. enabled: true
  148. state: started
  149. daemon_reload: true