Matrix Docker Ansible eploy
Ви не можете вибрати більше 25 тем Теми мають розпочинатися з літери або цифри, можуть містити дефіси (-) і не повинні перевищувати 35 символів.
 
 

223 рядки
9.5 KiB

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