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.
 
 

224 lines
8.7 KiB

  1. ---
  2. - name: Limit max upload size to 200MB part 1
  3. set_fact:
  4. matrix_synapse_max_upload_size_mb: "200"
  5. when: awx_synapse_max_upload_size_mb | int >= 200
  6. - name: Limit max upload size to 200MB part 2
  7. set_fact:
  8. matrix_synapse_max_upload_size_mb: "{{ awx_synapse_max_upload_size_mb }}"
  9. when: awx_synapse_max_upload_size_mb | int < 200
  10. - name: Record Synapse variables locally on AWX
  11. delegate_to: 127.0.0.1
  12. lineinfile:
  13. path: '{{ awx_cached_matrix_vars }}'
  14. regexp: "^#? *{{ item.key | regex_escape() }}:"
  15. line: "{{ item.key }}: {{ item.value }}"
  16. insertafter: '# Synapse Settings Start'
  17. with_dict:
  18. 'matrix_synapse_allow_public_rooms_over_federation': '{{ matrix_synapse_allow_public_rooms_over_federation }}'
  19. 'matrix_synapse_enable_registration': '{{ matrix_synapse_enable_registration }}'
  20. 'matrix_synapse_federation_enabled': '{{ matrix_synapse_federation_enabled }}'
  21. 'matrix_synapse_enable_group_creation': '{{ matrix_synapse_enable_group_creation }}'
  22. 'matrix_synapse_presence_enabled': '{{ matrix_synapse_presence_enabled }}'
  23. 'matrix_synapse_max_upload_size_mb': '{{ matrix_synapse_max_upload_size_mb }}'
  24. 'matrix_synapse_url_preview_enabled': '{{ matrix_synapse_url_preview_enabled }}'
  25. 'matrix_synapse_allow_guest_access': '{{ matrix_synapse_allow_guest_access }}'
  26. - name: Empty Synapse variable 'matrix_synapse_auto_join_rooms' locally on AWX, if raw inputs empty
  27. delegate_to: 127.0.0.1
  28. replace:
  29. path: '{{ awx_cached_matrix_vars }}'
  30. regexp: "^matrix_synapse_auto_join_rooms: .*$"
  31. replace: "matrix_synapse_auto_join_rooms: []"
  32. when: awx_synapse_auto_join_rooms | length == 0
  33. - name: If the raw inputs is not empty start constructing parsed auto_join_rooms list
  34. set_fact:
  35. awx_synapse_auto_join_rooms_array: |-
  36. {{ awx_synapse_auto_join_rooms.splitlines() | to_json }}
  37. when: awx_synapse_auto_join_rooms | length > 0
  38. - name: Record Synapse variable 'matrix_synapse_auto_join_rooms' locally on AWX, if it's not blank
  39. delegate_to: 127.0.0.1
  40. lineinfile:
  41. path: '{{ awx_cached_matrix_vars }}'
  42. regexp: "^#? *{{ item.key | regex_escape() }}:"
  43. line: "{{ item.key }}: {{ item.value }}"
  44. insertafter: '# Synapse Settings Start'
  45. with_dict:
  46. "matrix_synapse_auto_join_rooms": "{{ awx_synapse_auto_join_rooms_array }}"
  47. when: awx_synapse_auto_join_rooms | length > 0
  48. - name: Record Synapse Shared Secret if it's defined
  49. delegate_to: 127.0.0.1
  50. lineinfile:
  51. path: '{{ awx_cached_matrix_vars }}'
  52. regexp: "^#? *{{ item.key | regex_escape() }}:"
  53. line: "{{ item.key }}: {{ item.value }}"
  54. insertafter: '# Synapse Settings Start'
  55. with_dict:
  56. 'matrix_synapse_registration_shared_secret': '{{ awx_matrix_synapse_registration_shared_secret }}'
  57. when: awx_matrix_synapse_registration_shared_secret | length > 0
  58. - name: Record registations_require_3pid extra variable if true
  59. delegate_to: 127.0.0.1
  60. lineinfile:
  61. path: '{{ awx_cached_matrix_vars }}'
  62. regexp: "{{ item }}"
  63. line: "{{ item }}"
  64. insertbefore: '# Synapse Extension End'
  65. with_items:
  66. - " registrations_require_3pid:"
  67. - " - email"
  68. when: awx_registrations_require_3pid | bool
  69. - name: Remove registrations_require_3pid extra variable if false
  70. delegate_to: 127.0.0.1
  71. lineinfile:
  72. path: '{{ awx_cached_matrix_vars }}'
  73. regexp: "{{ item }}"
  74. line: "{{ item }}"
  75. insertbefore: '# Synapse Extension End'
  76. state: absent
  77. with_items:
  78. - " registrations_require_3pid:"
  79. - " - email"
  80. when: not awx_registrations_require_3pid | bool
  81. - name: Remove URL Languages
  82. delegate_to: 127.0.0.1
  83. replace:
  84. path: '{{ awx_cached_matrix_vars }}'
  85. regexp: '^(?!.*\bemail\b) - [a-zA-Z\-]{2,5}\n'
  86. after: ' url_preview_accept_language:'
  87. before: '# Synapse Extension End'
  88. - name: Set URL languages default if raw inputs empty
  89. set_fact:
  90. awx_url_preview_accept_language_default: 'en'
  91. when: awx_url_preview_accept_language | length == 0
  92. - name: Set URL languages default if raw inputs not empty
  93. set_fact:
  94. awx_url_preview_accept_language_default: "{{ awx_url_preview_accept_language }}"
  95. when: awx_url_preview_accept_language|length > 0
  96. - name: Set URL languages if raw inputs empty
  97. delegate_to: 127.0.0.1
  98. lineinfile:
  99. path: '{{ awx_cached_matrix_vars }}'
  100. insertafter: '^ url_preview_accept_language:'
  101. line: " - {{ awx_url_preview_accept_language_default }}"
  102. when: awx_url_preview_accept_language|length == 0
  103. - name: Set URL languages if raw inputs not empty
  104. delegate_to: 127.0.0.1
  105. lineinfile:
  106. path: '{{ awx_cached_matrix_vars }}'
  107. insertafter: '^ url_preview_accept_language:'
  108. line: " - {{ item }}"
  109. with_items: "{{ awx_url_preview_accept_language.splitlines() }}"
  110. when: awx_url_preview_accept_language | length > 0
  111. - name: Remove Federation Whitelisting 1
  112. delegate_to: 127.0.0.1
  113. replace:
  114. path: '{{ awx_cached_matrix_vars }}'
  115. regexp: '^ - [a-z0-9]+\.[a-z0-9.]+\n'
  116. after: ' federation_domain_whitelist:'
  117. before: '# Synapse Extension End'
  118. - name: Remove Federation Whitelisting 2
  119. delegate_to: 127.0.0.1
  120. lineinfile:
  121. path: '{{ awx_cached_matrix_vars }}'
  122. line: " federation_domain_whitelist:"
  123. state: absent
  124. - name: Set Federation Whitelisting 1
  125. delegate_to: 127.0.0.1
  126. lineinfile:
  127. path: '{{ awx_cached_matrix_vars }}'
  128. insertafter: '^matrix_synapse_configuration_extension_yaml: \|'
  129. line: " federation_domain_whitelist:"
  130. when: awx_federation_whitelist | length > 0
  131. - name: Set Federation Whitelisting 2
  132. delegate_to: 127.0.0.1
  133. lineinfile:
  134. path: '{{ awx_cached_matrix_vars }}'
  135. insertafter: '^ federation_domain_whitelist:'
  136. line: " - {{ item }}"
  137. with_items: "{{ awx_federation_whitelist.splitlines() }}"
  138. when: awx_federation_whitelist | length > 0
  139. - name: Set awx_recaptcha_public_key to a 'public-key' if undefined
  140. set_fact: awx_recaptcha_public_key="public-key"
  141. when: (awx_recaptcha_public_key is not defined) or (awx_recaptcha_public_key|length == 0)
  142. - name: Set awx_recaptcha_private_key to a 'private-key' if undefined
  143. set_fact: awx_recaptcha_private_key="private-key"
  144. when: (awx_recaptcha_private_key is not defined) or (awx_recaptcha_private_key|length == 0)
  145. - name: Record Synapse Extension variables locally on AWX
  146. delegate_to: 127.0.0.1
  147. lineinfile:
  148. path: '{{ awx_cached_matrix_vars }}'
  149. regexp: "^#? *{{ item.key | regex_escape() }}:"
  150. line: "{{ item.key }}: {{ item.value }}"
  151. insertbefore: '# Synapse Extension End'
  152. with_dict:
  153. ' enable_registration_captcha': '{{ awx_enable_registration_captcha }}'
  154. ' recaptcha_public_key': '{{ awx_recaptcha_public_key }}'
  155. ' recaptcha_private_key': '{{ awx_recaptcha_private_key }}'
  156. - name: Record Synapse Custom variables locally on AWX
  157. delegate_to: 127.0.0.1
  158. lineinfile:
  159. path: '{{ awx_cached_matrix_vars }}'
  160. regexp: "^#? *{{ item.key | regex_escape() }}:"
  161. line: "{{ item.key }}: {{ item.value }}"
  162. insertbefore: '# Synapse Settings End'
  163. with_dict:
  164. 'awx_federation_whitelist': '{{ awx_federation_whitelist.splitlines() | to_json }}'
  165. 'awx_url_preview_accept_language_default': '{{ awx_url_preview_accept_language_default.splitlines() | to_json }}'
  166. 'awx_enable_registration_captcha': '{{ awx_enable_registration_captcha }}'
  167. 'awx_recaptcha_public_key': '"{{ awx_recaptcha_public_key }}"'
  168. 'awx_recaptcha_private_key': '"{{ awx_recaptcha_private_key }}"'
  169. - name: Save new 'Configure Synapse' survey.json to the AWX tower, template
  170. delegate_to: 127.0.0.1
  171. template:
  172. src: 'roles/matrix-awx/surveys/configure_synapse.json.j2'
  173. dest: '/var/lib/awx/projects/clients/{{ member_id }}/{{ subscription_id }}//configure_synapse.json'
  174. - name: Copy new 'Configure Synapse' survey.json to target machine
  175. copy:
  176. src: '/var/lib/awx/projects/clients/{{ member_id }}/{{ subscription_id }}/configure_synapse.json'
  177. dest: '/matrix/awx/configure_synapse.json'
  178. mode: '0660'
  179. - name: Recreate 'Configure Synapse' job template
  180. delegate_to: 127.0.0.1
  181. awx.awx.tower_job_template:
  182. name: "{{ matrix_domain }} - 1 - Configure Synapse"
  183. description: "Configure Synapse (homeserver) settings."
  184. extra_vars: "{{ lookup('file', '/var/lib/awx/projects/clients/{{ member_id }}/{{ subscription_id }}/extra_vars.json') }}"
  185. job_type: run
  186. job_tags: "start,setup-synapse"
  187. inventory: "{{ member_id }}"
  188. project: "{{ member_id }} - Matrix Docker Ansible Deploy"
  189. playbook: setup.yml
  190. credential: "{{ member_id }} - AWX SSH Key"
  191. survey_enabled: true
  192. survey_spec: "{{ lookup('file', '/var/lib/awx/projects/clients/{{ member_id }}/{{ subscription_id }}/configure_synapse.json') }}"
  193. become_enabled: true
  194. state: present
  195. verbosity: 1
  196. tower_host: "https://{{ awx_host }}"
  197. tower_oauthtoken: "{{ awx_session_token.ansible_facts.tower_token.token }}"
  198. validate_certs: true