Просмотр исходного кода

Merge pull request #1 from spantaleev/master

Update
pull/1323/head
Luke 4 лет назад
committed by GitHub
Родитель
Сommit
0661e98906
Не найден GPG ключ соответствующий данной подписи Идентификатор GPG ключа: 4AEE18F83AFDEB23
44 измененных файлов: 608 добавлений и 386 удалений
  1. +8
    -8
      docs/configuring-playbook-dimension.md
  2. +1
    -0
      docs/self-building.md
  3. +2
    -0
      group_vars/matrix_servers
  4. +6
    -6
      roles/matrix-awx/surveys/access_export.json.j2
  5. +2
    -2
      roles/matrix-awx/surveys/backup_server.json.j2
  6. +10
    -10
      roles/matrix-awx/surveys/configure_corporal.json.j2
  7. +2
    -2
      roles/matrix-awx/surveys/configure_dimension.json.j2
  8. +62
    -14
      roles/matrix-awx/surveys/configure_element.json.j2
  9. +2
    -2
      roles/matrix-awx/surveys/configure_element_subdomain.json.j2
  10. +4
    -4
      roles/matrix-awx/surveys/configure_ma1sd.json.j2
  11. +16
    -16
      roles/matrix-awx/surveys/configure_synapse.json.j2
  12. +8
    -8
      roles/matrix-awx/surveys/configure_website_access_export.json.j2
  13. +6
    -6
      roles/matrix-awx/tasks/backup_server.yml
  14. +12
    -12
      roles/matrix-awx/tasks/create_user.yml
  15. +26
    -25
      roles/matrix-awx/tasks/customise_website_access_export.yml
  16. +1
    -0
      roles/matrix-awx/tasks/delete_session_token.yml
  17. +7
    -6
      roles/matrix-awx/tasks/export_server.yml
  18. +1
    -1
      roles/matrix-awx/tasks/import_awx.yml
  19. +1
    -0
      roles/matrix-awx/tasks/load_hosting_and_org_variables.yml
  20. +1
    -0
      roles/matrix-awx/tasks/load_matrix_variables.yml
  21. +3
    -2
      roles/matrix-awx/tasks/purge_database_build_list.yml
  22. +4
    -3
      roles/matrix-awx/tasks/purge_database_events.yml
  23. +72
    -71
      roles/matrix-awx/tasks/purge_database_main.yml
  24. +4
    -3
      roles/matrix-awx/tasks/purge_database_no_local.yml
  25. +4
    -3
      roles/matrix-awx/tasks/purge_database_users.yml
  26. +5
    -4
      roles/matrix-awx/tasks/purge_media_local.yml
  27. +26
    -26
      roles/matrix-awx/tasks/purge_media_main.yml
  28. +5
    -4
      roles/matrix-awx/tasks/purge_media_remote.yml
  29. +1
    -0
      roles/matrix-awx/tasks/rename_variables.yml
  30. +1
    -0
      roles/matrix-awx/tasks/rotate_ssh.yml
  31. +46
    -45
      roles/matrix-awx/tasks/self_check.yml
  32. +14
    -13
      roles/matrix-awx/tasks/set_variables_corporal.yml
  33. +11
    -10
      roles/matrix-awx/tasks/set_variables_dimension.yml
  34. +123
    -5
      roles/matrix-awx/tasks/set_variables_element.yml
  35. +2
    -1
      roles/matrix-awx/tasks/set_variables_element_subdomain.yml
  36. +2
    -1
      roles/matrix-awx/tasks/set_variables_jitsi.yml
  37. +10
    -9
      roles/matrix-awx/tasks/set_variables_ma1sd.yml
  38. +1
    -0
      roles/matrix-awx/tasks/set_variables_mailer.yml
  39. +39
    -39
      roles/matrix-awx/tasks/set_variables_synapse.yml
  40. +1
    -0
      roles/matrix-awx/tasks/set_variables_synapse_admin.yml
  41. +1
    -1
      roles/matrix-bridge-appservice-slack/defaults/main.yml
  42. +7
    -1
      roles/matrix-bridge-mautrix-whatsapp/defaults/main.yml
  43. +35
    -10
      roles/matrix-bridge-mautrix-whatsapp/tasks/setup_install.yml
  44. +13
    -13
      roles/matrix-common-after/tasks/awx_post.yml

+ 8
- 8
docs/configuring-playbook-dimension.md Просмотреть файл

@@ -3,14 +3,12 @@
**[Dimension](https://dimension.t2bot.io) can only be installed after Matrix services are installed and running.** **[Dimension](https://dimension.t2bot.io) can only be installed after Matrix services are installed and running.**
If you're just installing Matrix services for the first time, please continue with the [Configuration](configuring-playbook.md) / [Installation](installing.md) flow and come back here later. If you're just installing Matrix services for the first time, please continue with the [Configuration](configuring-playbook.md) / [Installation](installing.md) flow and come back here later.


**Note**: enabling Dimension, means that the `openid` API endpoints will be exposed on the Matrix Federation port (usually `8448`), even if [federation](configuring-playbook-federation.md) is disabled. It's something to be aware of, especially in terms of firewall whitelisting (make sure port `8448` is accessible).
**Note**: This playbook now supports running [Dimension](https://dimension.t2bot.io) in both a federated and [unfederated](https://github.com/turt2live/matrix-dimension/blob/master/docs/unfederated.md) environments. This is handled automatically based on the value of `matrix_synapse_federation_enabled`. Enabling Dimension, means that the `openid` API endpoints will be exposed on the Matrix Federation port (usually `8448`), even if [federation](configuring-playbook-federation.md) is disabled. It's something to be aware of, especially in terms of firewall whitelisting (make sure port `8448` is accessible).




## Prerequisites ## Prerequisites


This playbook now supports running [Dimension](https://dimension.t2bot.io) in both a federated and an [unfederated](https://github.com/turt2live/matrix-dimension/blob/master/docs/unfederated.md) environment. This is handled automatically based on the value of `matrix_synapse_federation_enabled`.

Other important prerequisite is the `dimension.<your-domain>` DNS record being set up correctly. See [Configuring your DNS server](configuring-dns.md) on how to set up DNS record correctly.
The `dimension.<your-domain>` DNS record must be created. See [Configuring your DNS server](configuring-dns.md) on how to set up DNS record correctly.




## Enable ## Enable
@@ -45,11 +43,11 @@ To get an access token for the Dimension user, you can follow one of two options
*Through an interactive login*: *Through an interactive login*:


1. In a private browsing session (incognito window), open Element. 1. In a private browsing session (incognito window), open Element.
2. Log in with the `dimension` user and its password.
1. Log in with the `dimension` user and its password.
1. Set the display name and avatar, if required. 1. Set the display name and avatar, if required.
2. In the settings page choose "Help & About", scroll down to the bottom and click `Access Token: <click to reveal>`.
3. Copy the highlighted text to your configuration.
4. Close the private browsing session. **Do not log out**. Logging out will invalidate the token, making it not work.
1. In the settings page choose "Help & About", scroll down to the bottom and expand the `Access Token` section.
1. Copy the access token to your configuration.
1. Close the private browsing session. **Do not log out**. Logging out will invalidate the token, making it not work.


*With CURL* *With CURL*


@@ -81,6 +79,8 @@ After these variables have been set, please run the following command to re-run
ansible-playbook -i inventory/hosts setup.yml --tags=setup-all,start ansible-playbook -i inventory/hosts setup.yml --tags=setup-all,start
``` ```


After Dimension has been installed you may need to log out and log back in for it to pick up the new integrations manager. Then you can access integrations in Element by opening a room, clicking the Room info button (`i`) button in the top right corner of the screen, and then clicking Add widgets, bridges & bots.



## Jitsi domain ## Jitsi domain




+ 1
- 0
docs/self-building.md Просмотреть файл

@@ -27,6 +27,7 @@ List of roles where self-building the Docker image is currently possible:
- `matrix-bridge-mautrix-googlechat` - `matrix-bridge-mautrix-googlechat`
- `matrix-bridge-mautrix-telegram` - `matrix-bridge-mautrix-telegram`
- `matrix-bridge-mautrix-signal` - `matrix-bridge-mautrix-signal`
- `matrix-bridge-mautrix-whatsapp`
- `matrix-bridge-mx-puppet-skype` - `matrix-bridge-mx-puppet-skype`
- `matrix-bot-mjolnir` - `matrix-bot-mjolnir`
- `matrix-bot-matrix-reminder-bot` - `matrix-bot-matrix-reminder-bot`


+ 2
- 0
group_vars/matrix_servers Просмотреть файл

@@ -476,6 +476,8 @@ matrix_mautrix_telegram_database_password: "{{ matrix_synapse_macaroon_secret_ke
# We don't enable bridges by default. # We don't enable bridges by default.
matrix_mautrix_whatsapp_enabled: false matrix_mautrix_whatsapp_enabled: false


matrix_mautrix_whatsapp_container_image_self_build: "{{ matrix_architecture not in ['arm64', 'amd64'] }}"

matrix_mautrix_whatsapp_systemd_required_services_list: | matrix_mautrix_whatsapp_systemd_required_services_list: |
{{ {{
['docker.service'] ['docker.service']


+ 6
- 6
roles/matrix-awx/surveys/access_export.json.j2 Просмотреть файл

@@ -8,10 +8,10 @@
"required": true, "required": true,
"min": null, "min": null,
"max": null, "max": null,
"default": "{{ sftp_auth_method | string }}",
"default": "{{ awx_sftp_auth_method | string }}",
"choices": "Disabled\nPassword\nSSH Key", "choices": "Disabled\nPassword\nSSH Key",
"new_question": true, "new_question": true,
"variable": "sftp_auth_method",
"variable": "awx_sftp_auth_method",
"type": "multiplechoice" "type": "multiplechoice"
}, },
{ {
@@ -20,10 +20,10 @@
"required": false, "required": false,
"min": 0, "min": 0,
"max": 64, "max": 64,
"default": "{{ sftp_password }}",
"default": "{{ awx_sftp_password }}",
"choices": "", "choices": "",
"new_question": true, "new_question": true,
"variable": "sftp_password",
"variable": "awx_sftp_password",
"type": "password" "type": "password"
}, },
{ {
@@ -32,10 +32,10 @@
"required": false, "required": false,
"min": 0, "min": 0,
"max": 16384, "max": 16384,
"default": "{{ sftp_public_key }}",
"default": "{{ awx_sftp_public_key }}",
"choices": "", "choices": "",
"new_question": true, "new_question": true,
"variable": "sftp_public_key",
"variable": "awx_sftp_public_key",
"type": "text" "type": "text"
} }
] ]


+ 2
- 2
roles/matrix-awx/surveys/backup_server.json.j2 Просмотреть файл

@@ -8,10 +8,10 @@
"required": false, "required": false,
"min": null, "min": null,
"max": null, "max": null,
"default": "{{ matrix_awx_backup_enabled | string | lower }}",
"default": "{{ awx_backup_enabled | string | lower }}",
"choices": "true\nfalse", "choices": "true\nfalse",
"new_question": true, "new_question": true,
"variable": "matrix_awx_backup_enabled",
"variable": "awx_backup_enabled",
"type": "multiplechoice" "type": "multiplechoice"
} }
] ]


+ 10
- 10
roles/matrix-awx/surveys/configure_corporal.json.j2 Просмотреть файл

@@ -20,10 +20,10 @@
"required": true, "required": true,
"min": null, "min": null,
"max": null, "max": null,
"default": "{{ matrix_corporal_policy_provider_mode }}",
"default": "{{ awx_corporal_policy_provider_mode }}",
"choices": "Simple Static File\nHTTP Pull Mode (API Enabled)\nHTTP Push Mode (API Enabled)", "choices": "Simple Static File\nHTTP Pull Mode (API Enabled)\nHTTP Push Mode (API Enabled)",
"new_question": true, "new_question": true,
"variable": "matrix_corporal_policy_provider_mode",
"variable": "awx_corporal_policy_provider_mode",
"type": "multiplechoice" "type": "multiplechoice"
}, },
{ {
@@ -34,7 +34,7 @@
"max": 65536, "max": 65536,
"default": "", "default": "",
"new_question": true, "new_question": true,
"variable": "matrix_corporal_simple_static_config",
"variable": "awx_corporal_simple_static_config",
"type": "textarea" "type": "textarea"
}, },
{ {
@@ -43,9 +43,9 @@
"required": false, "required": false,
"min": 0, "min": 0,
"max": 4096, "max": 4096,
"default": "{{ matrix_corporal_pull_mode_uri }}",
"default": "{{ awx_corporal_pull_mode_uri }}",
"new_question": true, "new_question": true,
"variable": "matrix_corporal_pull_mode_uri",
"variable": "awx_corporal_pull_mode_uri",
"type": "text" "type": "text"
}, },
{ {
@@ -54,10 +54,10 @@
"required": false, "required": false,
"min": 0, "min": 0,
"max": 256, "max": 256,
"default": "{{ matrix_corporal_pull_mode_token }}",
"default": "{{ awx_corporal_pull_mode_token }}",
"choices": "", "choices": "",
"new_question": true, "new_question": true,
"variable": "matrix_corporal_pull_mode_token",
"variable": "awx_corporal_pull_mode_token",
"type": "password" "type": "password"
}, },
{ {
@@ -66,10 +66,10 @@
"required": false, "required": false,
"min": 0, "min": 0,
"max": 256, "max": 256,
"default": "{{ matrix_corporal_http_api_auth_token }}",
"default": "{{ awx_corporal_http_api_auth_token }}",
"choices": "", "choices": "",
"new_question": true, "new_question": true,
"variable": "matrix_corporal_http_api_auth_token",
"variable": "awx_corporal_http_api_auth_token",
"type": "password" "type": "password"
}, },
{ {
@@ -78,7 +78,7 @@
"required": false, "required": false,
"min": null, "min": null,
"max": null, "max": null,
"default": "{{ matrix_corporal_raise_ratelimits }}",
"default": "{{ awx_corporal_raise_ratelimits }}",
"choices": "Normal\nRaised", "choices": "Normal\nRaised",
"new_question": true, "new_question": true,
"variable": "matrix_corporal_raise_ratelimits", "variable": "matrix_corporal_raise_ratelimits",


+ 2
- 2
roles/matrix-awx/surveys/configure_dimension.json.j2 Просмотреть файл

@@ -20,10 +20,10 @@
"required": false, "required": false,
"min": 0, "min": 0,
"max": 65536, "max": 65536,
"default": {{ ext_dimension_users_raw_final | to_json }},
"default": {{ awx_dimension_users_final | to_json }},
"choices": "", "choices": "",
"new_question": true, "new_question": true,
"variable": "ext_dimension_users_raw",
"variable": "awx_dimension_users",
"type": "textarea" "type": "textarea"
} }
] ]


+ 62
- 14
roles/matrix-awx/surveys/configure_element.json.j2 Просмотреть файл

@@ -14,18 +14,6 @@
"variable": "matrix_client_element_enabled", "variable": "matrix_client_element_enabled",
"type": "multiplechoice" "type": "multiplechoice"
}, },
{
"question_name": "Set Branding for Web Client",
"question_description": "Sets the 'branding' seen in the tab and on the welcome page to a custom value.",
"required": false,
"min": 0,
"max": 256,
"default": "{{ matrix_client_element_brand }}",
"choices": "",
"new_question": true,
"variable": "matrix_client_element_brand",
"type": "text"
},
{ {
"question_name": "Set Theme for Web Client", "question_name": "Set Theme for Web Client",
"question_description": "Sets the default theme for the web client, can be changed later by individual users.", "question_description": "Sets the default theme for the web client, can be changed later by individual users.",
@@ -38,18 +26,78 @@
"variable": "matrix_client_element_default_theme", "variable": "matrix_client_element_default_theme",
"type": "multiplechoice" "type": "multiplechoice"
}, },
{
"question_name": "Set Branding for Web Client",
"question_description": "Sets the 'branding' seen in the tab and on the welcome page to a custom value.Leaving this field blank will cause the default branding will be used: 'Element'",
"required": false,
"min": 0,
"max": 256,
"default": "{{ matrix_client_element_brand | trim }}",
"choices": "",
"new_question": true,
"variable": "matrix_client_element_brand",
"type": "text"
},
{ {
"question_name": "Set Welcome Page Background", "question_name": "Set Welcome Page Background",
"question_description": "URL to Wallpaper, shown in background of the welcome page. Must be a 'https' link, otherwise it won't be set.",
"question_description": "Sets the background image on the welcome page, you should enter a URL to the image you want to use. Must be a 'https' link, otherwise it won't be set. Leaving this field blank will cause the default background to be used.",
"required": false, "required": false,
"min": 0, "min": 0,
"max": 1024, "max": 1024,
"default": "{{ matrix_client_element_branding_welcomeBackgroundUrl }}",
"default": "{{ matrix_client_element_branding_welcomeBackgroundUrl | trim }}",
"choices": "", "choices": "",
"new_question": true, "new_question": true,
"variable": "matrix_client_element_branding_welcomeBackgroundUrl", "variable": "matrix_client_element_branding_welcomeBackgroundUrl",
"type": "text" "type": "text"
}, },
{
"question_name": "Set Welcome Page Logo",
"question_description": "Sets the logo found on the welcome and login page, must be a valid https link to your logo, the logo itself should be a square vector image (SVG). Leaving this field blank will cause the default Element logo to be used.",
"required": false,
"min": 0,
"max": 1024,
"default": "{{ matrix_client_element_welcome_logo | trim }}",
"choices": "",
"new_question": true,
"variable": "matrix_client_element_welcome_logo",
"type": "text"
},
{
"question_name": "Set Welcome Page Logo URL",
"question_description": "Sets the URL link the welcome page logo leads to, must be a valid https link. Leaving this field blank will cause this default link to be used: 'https://element.io'",
"required": false,
"min": 0,
"max": 1024,
"default": "{{ matrix_client_element_welcome_logo_link | trim }}",
"choices": "",
"new_question": true,
"variable": "matrix_client_element_welcome_logo_link",
"type": "text"
},
{
"question_name": "Set Welcome Page Headline",
"question_description": "Sets the headline seen on the welcome page. Leaving this field blank will cause this default headline to be used: 'Welcome to Element!'",
"required": false,
"min": 0,
"max": 512,
"default": "{{ awx_matrix_client_element_welcome_headline | trim }}",
"choices": "",
"new_question": true,
"variable": "awx_matrix_client_element_welcome_headline",
"type": "text"
},
{
"question_name": "Set Welcome Page Text",
"question_description": "Sets the text seen on the welcome page. Leaving this field blank will cause this default headline to be used: 'Decentralised, encrypted chat & collaboration powered by [Matrix]'",
"required": false,
"min": 0,
"max": 2048,
"default": "{{ awx_matrix_client_element_welcome_text | trim }}",
"choices": "",
"new_question": true,
"variable": "awx_matrix_client_element_welcome_text",
"type": "text"
},
{ {
"question_name": "Show Registration Button", "question_name": "Show Registration Button",
"question_description": "If you show the registration button on the welcome page.", "question_description": "If you show the registration button on the welcome page.",


+ 2
- 2
roles/matrix-awx/surveys/configure_element_subdomain.json.j2 Просмотреть файл

@@ -8,10 +8,10 @@
"required": false, "required": false,
"min": 0, "min": 0,
"max": 2048, "max": 2048,
"default": "{{ element_subdomain }}",
"default": "{{ awx_element_subdomain }}",
"choices": "", "choices": "",
"new_question": true, "new_question": true,
"variable": "element_subdomain",
"variable": "awx_element_subdomain",
"type": "text" "type": "text"
} }
] ]


+ 4
- 4
roles/matrix-awx/surveys/configure_ma1sd.json.j2 Просмотреть файл

@@ -20,10 +20,10 @@
"required": false, "required": false,
"min": null, "min": null,
"max": null, "max": null,
"default": "{{ ext_matrix_ma1sd_auth_store }}",
"default": "{{ awx_matrix_ma1sd_auth_store }}",
"choices": "Synapse Internal\nLDAP/AD", "choices": "Synapse Internal\nLDAP/AD",
"new_question": true, "new_question": true,
"variable": "ext_matrix_ma1sd_auth_store",
"variable": "awx_matrix_ma1sd_auth_store",
"type": "multiplechoice" "type": "multiplechoice"
}, },
{ {
@@ -32,9 +32,9 @@
"required": false, "required": false,
"min": 0, "min": 0,
"max": 65536, "max": 65536,
"default": {{ ext_matrix_ma1sd_configuration_extension_yaml | to_json }},
"default": {{ awx_matrix_ma1sd_configuration_extension_yaml | to_json }},
"new_question": true, "new_question": true,
"variable": "ext_matrix_ma1sd_configuration_extension_yaml",
"variable": "awx_matrix_ma1sd_configuration_extension_yaml",
"type": "textarea" "type": "textarea"
} }
] ]


+ 16
- 16
roles/matrix-awx/surveys/configure_synapse.json.j2 Просмотреть файл

@@ -92,10 +92,10 @@
"required": false, "required": false,
"min": null, "min": null,
"max": null, "max": null,
"default": "{{ ext_registrations_require_3pid | string | lower }}",
"default": "{{ awx_registrations_require_3pid | string | lower }}",
"choices": "true\nfalse", "choices": "true\nfalse",
"new_question": true, "new_question": true,
"variable": "ext_registrations_require_3pid",
"variable": "awx_registrations_require_3pid",
"type": "multiplechoice" "type": "multiplechoice"
}, },
{ {
@@ -107,7 +107,7 @@
"default": "", "default": "",
"choices": "", "choices": "",
"new_question": true, "new_question": true,
"variable": "ext_matrix_synapse_registration_shared_secret",
"variable": "awx_matrix_synapse_registration_shared_secret",
"type": "password" "type": "password"
}, },
{ {
@@ -119,7 +119,7 @@
"default": "{{ matrix_synapse_max_upload_size_mb }}", "default": "{{ matrix_synapse_max_upload_size_mb }}",
"choices": "", "choices": "",
"new_question": true, "new_question": true,
"variable": "matrix_synapse_max_upload_size_mb_raw",
"variable": "awx_synapse_max_upload_size_mb",
"type": "text" "type": "text"
}, },
{ {
@@ -128,10 +128,10 @@
"required": false, "required": false,
"min": 0, "min": 0,
"max": 65536, "max": 65536,
"default": {{ ext_url_preview_accept_language_default | to_json }},
"default": {{ awx_url_preview_accept_language_default | to_json }},
"choices": "", "choices": "",
"new_question": true, "new_question": true,
"variable": "ext_url_preview_accept_language_raw",
"variable": "awx_url_preview_accept_language",
"type": "textarea" "type": "textarea"
}, },
{ {
@@ -140,10 +140,10 @@
"required": false, "required": false,
"min": 0, "min": 0,
"max": 65536, "max": 65536,
"default": {{ ext_federation_whitelist_raw | to_json }},
"default": {{ awx_federation_whitelist | to_json }},
"choices": "", "choices": "",
"new_question": true, "new_question": true,
"variable": "ext_federation_whitelist_raw",
"variable": "awx_federation_whitelist",
"type": "textarea" "type": "textarea"
}, },
{ {
@@ -152,10 +152,10 @@
"required": false, "required": false,
"min": 0, "min": 0,
"max": 65536, "max": 65536,
"default": {{ matrix_synapse_auto_join_rooms_raw | to_json }},
"default": {{ awx_synapse_auto_join_rooms | to_json }},
"choices": "", "choices": "",
"new_question": true, "new_question": true,
"variable": "matrix_synapse_auto_join_rooms_raw",
"variable": "awx_synapse_auto_join_rooms",
"type": "textarea" "type": "textarea"
}, },
{ {
@@ -164,10 +164,10 @@
"required": false, "required": false,
"min": null, "min": null,
"max": null, "max": null,
"default": "{{ ext_enable_registration_captcha | string | lower }}",
"default": "{{ awx_enable_registration_captcha | string | lower }}",
"choices": "true\nfalse", "choices": "true\nfalse",
"new_question": true, "new_question": true,
"variable": "ext_enable_registration_captcha",
"variable": "awx_enable_registration_captcha",
"type": "multiplechoice" "type": "multiplechoice"
}, },
{ {
@@ -176,10 +176,10 @@
"required": false, "required": false,
"min": 0, "min": 0,
"max": 40, "max": 40,
"default": "{{ ext_recaptcha_public_key }}",
"default": "{{ awx_recaptcha_public_key }}",
"choices": "", "choices": "",
"new_question": true, "new_question": true,
"variable": "ext_recaptcha_public_key",
"variable": "awx_recaptcha_public_key",
"type": "text" "type": "text"
}, },
{ {
@@ -188,10 +188,10 @@
"required": false, "required": false,
"min": 0, "min": 0,
"max": 40, "max": 40,
"default": "{{ ext_recaptcha_private_key }}",
"default": "{{ awx_recaptcha_private_key }}",
"choices": "", "choices": "",
"new_question": true, "new_question": true,
"variable": "ext_recaptcha_private_key",
"variable": "awx_recaptcha_private_key",
"type": "text" "type": "text"
} }
] ]


+ 8
- 8
roles/matrix-awx/surveys/configure_website_access_export.json.j2 Просмотреть файл

@@ -8,10 +8,10 @@
"required": true, "required": true,
"min": null, "min": null,
"max": null, "max": null,
"default": "{{ customise_base_domain_website | string | lower }}",
"default": "{{ awx_customise_base_domain_website | string | lower }}",
"choices": "true\nfalse", "choices": "true\nfalse",
"new_question": true, "new_question": true,
"variable": "customise_base_domain_website",
"variable": "awx_customise_base_domain_website",
"type": "multiplechoice" "type": "multiplechoice"
}, },
{ {
@@ -20,10 +20,10 @@
"required": true, "required": true,
"min": null, "min": null,
"max": null, "max": null,
"default": "{{ sftp_auth_method | string }}",
"default": "{{ awx_sftp_auth_method | string }}",
"choices": "Disabled\nPassword\nSSH Key", "choices": "Disabled\nPassword\nSSH Key",
"new_question": true, "new_question": true,
"variable": "sftp_auth_method",
"variable": "awx_sftp_auth_method",
"type": "multiplechoice" "type": "multiplechoice"
}, },
{ {
@@ -32,10 +32,10 @@
"required": false, "required": false,
"min": 0, "min": 0,
"max": 64, "max": 64,
"default": "{{ sftp_password }}",
"default": "{{ awx_sftp_password }}",
"choices": "", "choices": "",
"new_question": true, "new_question": true,
"variable": "sftp_password",
"variable": "awx_sftp_password",
"type": "password" "type": "password"
}, },
{ {
@@ -44,10 +44,10 @@
"required": false, "required": false,
"min": 0, "min": 0,
"max": 16384, "max": 16384,
"default": "{{ sftp_public_key }}",
"default": "{{ awx_sftp_public_key }}",
"choices": "", "choices": "",
"new_question": true, "new_question": true,
"variable": "sftp_public_key",
"variable": "awx_sftp_public_key",
"type": "text" "type": "text"
} }
] ]


+ 6
- 6
roles/matrix-awx/tasks/backup_server.yml Просмотреть файл

@@ -7,7 +7,7 @@
line: "{{ item.key }}: {{ item.value }}" line: "{{ item.key }}: {{ item.value }}"
insertafter: '# AWX Settings Start' insertafter: '# AWX Settings Start'
with_dict: with_dict:
'matrix_awx_backup_enabled': '{{ matrix_awx_backup_enabled }}'
'awx_backup_enabled': '{{ awx_backup_enabled }}'
tags: use-survey tags: use-survey


- name: Save new 'Backup Server' survey.json to the AWX tower, template - name: Save new 'Backup Server' survey.json to the AWX tower, template
@@ -66,7 +66,7 @@
register: _create_instances register: _create_instances
async: 3600 # Maximum runtime in seconds. async: 3600 # Maximum runtime in seconds.
poll: 0 # Fire and continue (never poll) poll: 0 # Fire and continue (never poll)
when: matrix_awx_backup_enabled|bool
when: awx_backup_enabled|bool


- name: Wait for both of these jobs to finish - name: Wait for both of these jobs to finish
async_status: async_status:
@@ -76,11 +76,11 @@
delay: 5 # Check every 5 seconds. delay: 5 # Check every 5 seconds.
retries: 720 # Retry for a full hour. retries: 720 # Retry for a full hour.
with_items: "{{ _create_instances.results }}" with_items: "{{ _create_instances.results }}"
when: matrix_awx_backup_enabled|bool
when: awx_backup_enabled|bool


- name: Perform borg backup of postgres dump - name: Perform borg backup of postgres dump
command: borgmatic -c /root/.config/borgmatic/config_2.yaml command: borgmatic -c /root/.config/borgmatic/config_2.yaml
when: matrix_awx_backup_enabled|bool
when: awx_backup_enabled|bool


- name: Delete the AWX session token for executing modules - name: Delete the AWX session token for executing modules
awx.awx.tower_token: awx.awx.tower_token:
@@ -93,8 +93,8 @@


- name: Set boolean value to exit playbook - name: Set boolean value to exit playbook
set_fact: set_fact:
end_playbook: true
awx_end_playbook: true


- name: End playbook if this task list is called. - name: End playbook if this task list is called.
meta: end_play meta: end_play
when: end_playbook is defined and end_playbook|bool
when: awx_end_playbook is defined and awx_end_playbook|bool

+ 12
- 12
roles/matrix-awx/tasks/create_user.yml Просмотреть файл

@@ -6,22 +6,18 @@


- name: Set admin bool to zero - name: Set admin bool to zero
set_fact: set_fact:
admin_bool: 0
when: admin_access == 'false'
awx_admin_bool: 0
when: awx_admin_access == 'false'


- name: Examine if server admin set - name: Examine if server admin set
set_fact: set_fact:
admin_bool: 1
when: admin_access == 'true'

- name: Set boolean value to exit playbook
set_fact:
end_playbook: true
awx_admin_bool: 1
when: awx_admin_access == 'true'


- name: Create user account - name: Create user account
command: | command: |
/usr/local/bin/matrix-synapse-register-user {{ new_username | quote }} {{ new_password | quote }} {{ admin_bool }}
register: cmd
/usr/local/bin/matrix-synapse-register-user {{ awx_new_username | quote }} {{ awx_new_password | quote }} {{ awx_admin_bool }}
register: awx_cmd_output


- name: Delete the AWX session token for executing modules - name: Delete the AWX session token for executing modules
awx.awx.tower_token: awx.awx.tower_token:
@@ -32,9 +28,13 @@
tower_host: "https://{{ awx_host }}" tower_host: "https://{{ awx_host }}"
tower_oauthtoken: "{{ awx_session_token.ansible_facts.tower_token.token }}" tower_oauthtoken: "{{ awx_session_token.ansible_facts.tower_token.token }}"


- name: Set boolean value to exit playbook
set_fact:
awx_end_playbook: true

- name: Result - name: Result
debug: msg="{{ cmd.stdout }}"
debug: msg="{{ awx_cmd_output.stdout }}"


- name: End playbook if this task list is called. - name: End playbook if this task list is called.
meta: end_play meta: end_play
when: end_playbook is defined and end_playbook|bool
when: awx_end_playbook is defined and awx_end_playbook|bool

+ 26
- 25
roles/matrix-awx/tasks/customise_website_access_export.yml Просмотреть файл

@@ -1,3 +1,4 @@
---


- name: Enable index.html creation if user doesn't wish to customise base domain - name: Enable index.html creation if user doesn't wish to customise base domain
delegate_to: 127.0.0.1 delegate_to: 127.0.0.1
@@ -8,7 +9,7 @@
insertafter: '# Base Domain Settings Start' insertafter: '# Base Domain Settings Start'
with_dict: with_dict:
'matrix_nginx_proxy_base_domain_homepage_enabled': 'true' 'matrix_nginx_proxy_base_domain_homepage_enabled': 'true'
when: (customise_base_domain_website is defined) and not customise_base_domain_website|bool
when: (awx_customise_base_domain_website is defined) and not awx_customise_base_domain_website|bool


- name: Disable index.html creation to allow multi-file site if user does wish to customise base domain - name: Disable index.html creation to allow multi-file site if user does wish to customise base domain
delegate_to: 127.0.0.1 delegate_to: 127.0.0.1
@@ -19,7 +20,7 @@
insertafter: '# Base Domain Settings Start' insertafter: '# Base Domain Settings Start'
with_dict: with_dict:
'matrix_nginx_proxy_base_domain_homepage_enabled': 'false' 'matrix_nginx_proxy_base_domain_homepage_enabled': 'false'
when: (customise_base_domain_website is defined) and customise_base_domain_website|bool
when: (awx_customise_base_domain_website is defined) and awx_customise_base_domain_website|bool


- name: Record custom 'Customise Website + Access Export' variables locally on AWX - name: Record custom 'Customise Website + Access Export' variables locally on AWX
delegate_to: 127.0.0.1 delegate_to: 127.0.0.1
@@ -29,9 +30,9 @@
line: "{{ item.key }}: {{ item.value }}" line: "{{ item.key }}: {{ item.value }}"
insertafter: '# Custom Settings Start' insertafter: '# Custom Settings Start'
with_dict: with_dict:
'sftp_auth_method': '"{{ sftp_auth_method }}"'
'sftp_password': '"{{ sftp_password }}"'
'sftp_public_key': '"{{ sftp_public_key }}"'
'awx_sftp_auth_method': '"{{ awx_sftp_auth_method }}"'
'awx_sftp_password': '"{{ awx_sftp_password }}"'
'awx_sftp_public_key': '"{{ awx_sftp_public_key }}"'


- name: Record custom 'Customise Website + Access Export' variables locally on AWX - name: Record custom 'Customise Website + Access Export' variables locally on AWX
delegate_to: 127.0.0.1 delegate_to: 127.0.0.1
@@ -41,8 +42,8 @@
line: "{{ item.key }}: {{ item.value }}" line: "{{ item.key }}: {{ item.value }}"
insertafter: '# Custom Settings Start' insertafter: '# Custom Settings Start'
with_dict: with_dict:
'customise_base_domain_website': '{{ customise_base_domain_website }}'
when: customise_base_domain_website is defined
'awx_customise_base_domain_website': '{{ awx_customise_base_domain_website }}'
when: awx_customise_base_domain_website is defined


- name: Reload vars in matrix_vars.yml - name: Reload vars in matrix_vars.yml
include_vars: include_vars:
@@ -54,28 +55,28 @@
template: template:
src: './roles/matrix-awx/surveys/configure_website_access_export.json.j2' src: './roles/matrix-awx/surveys/configure_website_access_export.json.j2'
dest: '/var/lib/awx/projects/clients/{{ member_id }}/{{ subscription_id }}/configure_website_access_export.json' dest: '/var/lib/awx/projects/clients/{{ member_id }}/{{ subscription_id }}/configure_website_access_export.json'
when: customise_base_domain_website is defined
when: awx_customise_base_domain_website is defined


- name: Copy new 'Customise Website + Access Export' survey.json to target machine - name: Copy new 'Customise Website + Access Export' survey.json to target machine
copy: copy:
src: '/var/lib/awx/projects/clients/{{ member_id }}/{{ subscription_id }}/configure_website_access_export.json' src: '/var/lib/awx/projects/clients/{{ member_id }}/{{ subscription_id }}/configure_website_access_export.json'
dest: '/matrix/awx/configure_website_access_export.json' dest: '/matrix/awx/configure_website_access_export.json'
mode: '0660' mode: '0660'
when: customise_base_domain_website is defined
when: awx_customise_base_domain_website is defined


- name: Save new 'Customise Website + Access Export' survey.json to the AWX tower, template - name: Save new 'Customise Website + Access Export' survey.json to the AWX tower, template
delegate_to: 127.0.0.1 delegate_to: 127.0.0.1
template: template:
src: './roles/matrix-awx/surveys/access_export.json.j2' src: './roles/matrix-awx/surveys/access_export.json.j2'
dest: '/var/lib/awx/projects/clients/{{ member_id }}/{{ subscription_id }}/access_export.json' dest: '/var/lib/awx/projects/clients/{{ member_id }}/{{ subscription_id }}/access_export.json'
when: customise_base_domain_website is undefined
when: awx_customise_base_domain_website is undefined


- name: Copy new 'Customise Website + Access Export' survey.json to target machine - name: Copy new 'Customise Website + Access Export' survey.json to target machine
copy: copy:
src: '/var/lib/awx/projects/clients/{{ member_id }}/{{ subscription_id }}/access_export.json' src: '/var/lib/awx/projects/clients/{{ member_id }}/{{ subscription_id }}/access_export.json'
dest: '/matrix/awx/access_export.json' dest: '/matrix/awx/access_export.json'
mode: '0660' mode: '0660'
when: customise_base_domain_website is undefined
when: awx_customise_base_domain_website is undefined


- name: Recreate 'Configure Website + Access Export' job template - name: Recreate 'Configure Website + Access Export' job template
delegate_to: 127.0.0.1 delegate_to: 127.0.0.1
@@ -97,7 +98,7 @@
tower_host: "https://{{ awx_host }}" tower_host: "https://{{ awx_host }}"
tower_oauthtoken: "{{ awx_session_token.ansible_facts.tower_token.token }}" tower_oauthtoken: "{{ awx_session_token.ansible_facts.tower_token.token }}"
validate_certs: yes validate_certs: yes
when: customise_base_domain_website is defined
when: awx_customise_base_domain_website is defined


- name: Recreate 'Access Export' job template - name: Recreate 'Access Export' job template
delegate_to: 127.0.0.1 delegate_to: 127.0.0.1
@@ -119,9 +120,9 @@
tower_host: "https://{{ awx_host }}" tower_host: "https://{{ awx_host }}"
tower_oauthtoken: "{{ awx_session_token.ansible_facts.tower_token.token }}" tower_oauthtoken: "{{ awx_session_token.ansible_facts.tower_token.token }}"
validate_certs: yes validate_certs: yes
when: customise_base_domain_website is undefined
when: awx_customise_base_domain_website is undefined


- name: If user doesn't define a sftp_password, create a disabled 'sftp' account
- name: If user doesn't define a awx_sftp_password, create a disabled 'sftp' account
user: user:
name: sftp name: sftp
comment: SFTP user to set custom web files and access servers export comment: SFTP user to set custom web files and access servers export
@@ -130,18 +131,18 @@
group: matrix group: matrix
password: '*' password: '*'
update_password: always update_password: always
when: sftp_password|length == 0
when: awx_sftp_password|length == 0


- name: If user defines sftp_password, enable account and set password on 'stfp' account
- name: If user defines awx_sftp_password, enable account and set password on 'stfp' account
user: user:
name: sftp name: sftp
comment: SFTP user to set custom web files and access servers export comment: SFTP user to set custom web files and access servers export
shell: /bin/false shell: /bin/false
home: /home/sftp home: /home/sftp
group: matrix group: matrix
password: "{{ sftp_password | password_hash('sha512') }}"
password: "{{ awx_sftp_password | password_hash('sha512') }}"
update_password: always update_password: always
when: sftp_password|length > 0
when: awx_sftp_password|length > 0


- name: Ensure group "sftp" exists - name: Ensure group "sftp" exists
group: group:
@@ -153,7 +154,7 @@
name: sftp name: sftp
groups: sftp groups: sftp
append: yes append: yes
when: customise_base_domain_website is defined
when: awx_customise_base_domain_website is defined


- name: Create the ro /chroot directory with sticky bit if it doesn't exist. (/chroot/website has matrix:matrix permissions and is mounted to nginx container) - name: Create the ro /chroot directory with sticky bit if it doesn't exist. (/chroot/website has matrix:matrix permissions and is mounted to nginx container)
file: file:
@@ -170,7 +171,7 @@
owner: matrix owner: matrix
group: matrix group: matrix
mode: '0770' mode: '0770'
when: customise_base_domain_website is defined
when: awx_customise_base_domain_website is defined


- name: Ensure /chroot/export location exists - name: Ensure /chroot/export location exists
file: file:
@@ -202,11 +203,11 @@
- name: Insert public SSH key into authorized_keys file - name: Insert public SSH key into authorized_keys file
lineinfile: lineinfile:
path: /home/sftp/.ssh/authorized_keys path: /home/sftp/.ssh/authorized_keys
line: "{{ sftp_public_key }}"
line: "{{ awx_sftp_public_key }}"
owner: sftp owner: sftp
group: sftp group: sftp
mode: '0644' mode: '0644'
when: (sftp_public_key | length > 0) and (sftp_auth_method == "SSH Key")
when: (awx_sftp_public_key | length > 0) and (awx_sftp_auth_method == "SSH Key")
- name: Remove any existing Subsystem lines - name: Remove any existing Subsystem lines
lineinfile: lineinfile:
@@ -232,7 +233,7 @@
AllowTcpForwarding no AllowTcpForwarding no
PasswordAuthentication yes PasswordAuthentication yes
AuthorizedKeysFile /home/sftp/.ssh/authorized_keys AuthorizedKeysFile /home/sftp/.ssh/authorized_keys
when: sftp_auth_method == "Disabled"
when: awx_sftp_auth_method == "Disabled"


- name: Add SSH Match User section for password auth - name: Add SSH Match User section for password auth
blockinfile: blockinfile:
@@ -245,7 +246,7 @@
X11Forwarding no X11Forwarding no
AllowTcpForwarding no AllowTcpForwarding no
PasswordAuthentication yes PasswordAuthentication yes
when: sftp_auth_method == "Password"
when: awx_sftp_auth_method == "Password"


- name: Add SSH Match User section for publickey auth - name: Add SSH Match User section for publickey auth
blockinfile: blockinfile:
@@ -258,7 +259,7 @@
X11Forwarding no X11Forwarding no
AllowTcpForwarding no AllowTcpForwarding no
AuthorizedKeysFile /home/sftp/.ssh/authorized_keys AuthorizedKeysFile /home/sftp/.ssh/authorized_keys
when: sftp_auth_method == "SSH Key"
when: awx_sftp_auth_method == "SSH Key"


- name: Restart service ssh.service - name: Restart service ssh.service
service: service:


+ 1
- 0
roles/matrix-awx/tasks/delete_session_token.yml Просмотреть файл

@@ -1,3 +1,4 @@
---


- name: Delete the AWX session token for executing modules - name: Delete the AWX session token for executing modules
awx.awx.tower_token: awx.awx.tower_token:


+ 7
- 6
roles/matrix-awx/tasks/export_server.yml Просмотреть файл

@@ -1,21 +1,22 @@
---


- name: Run export of /matrix/ and snapshot the database simultaneously - name: Run export of /matrix/ and snapshot the database simultaneously
command: "{{ item }}" command: "{{ item }}"
with_items: with_items:
- /bin/sh /usr/local/bin/awx-export-service.sh 1 0 - /bin/sh /usr/local/bin/awx-export-service.sh 1 0
- /bin/sh /usr/local/bin/awx-export-service.sh 0 1 - /bin/sh /usr/local/bin/awx-export-service.sh 0 1
register: _create_instances
register: awx_create_instances
async: 3600 # Maximum runtime in seconds. async: 3600 # Maximum runtime in seconds.
poll: 0 # Fire and continue (never poll) poll: 0 # Fire and continue (never poll)


- name: Wait for both of these jobs to finish - name: Wait for both of these jobs to finish
async_status: async_status:
jid: "{{ item.ansible_job_id }}" jid: "{{ item.ansible_job_id }}"
register: _jobs
until: _jobs.finished
register: awx_jobs
until: awx_jobs.finished
delay: 5 # Check every 5 seconds. delay: 5 # Check every 5 seconds.
retries: 720 # Retry for a full hour. retries: 720 # Retry for a full hour.
with_items: "{{ _create_instances.results }}"
with_items: "{{ awx_create_instances.results }}"


- name: Schedule deletion of the export in 24 hours - name: Schedule deletion of the export in 24 hours
at: at:
@@ -35,8 +36,8 @@


- name: Set boolean value to exit playbook - name: Set boolean value to exit playbook
set_fact: set_fact:
end_playbook: true
awx_end_playbook: true


- name: End playbook if this task list is called. - name: End playbook if this task list is called.
meta: end_play meta: end_play
when: end_playbook is defined and end_playbook|bool
when: awx_end_playbook is defined and awx_end_playbook|bool

+ 1
- 1
roles/matrix-awx/tasks/import_awx.yml Просмотреть файл

@@ -1,7 +1,7 @@
---


- name: Ensure correct ownership of /matrix/awx - name: Ensure correct ownership of /matrix/awx
shell: chown -R matrix:matrix /matrix/awx shell: chown -R matrix:matrix /matrix/awx


- name: Ensure correct ownership of /matrix/synapse - name: Ensure correct ownership of /matrix/synapse
shell: chown -R matrix:matrix /matrix/synapse shell: chown -R matrix:matrix /matrix/synapse


+ 1
- 0
roles/matrix-awx/tasks/load_hosting_and_org_variables.yml Просмотреть файл

@@ -1,3 +1,4 @@
---


- name: Include vars in organisation.yml - name: Include vars in organisation.yml
include_vars: include_vars:


+ 1
- 0
roles/matrix-awx/tasks/load_matrix_variables.yml Просмотреть файл

@@ -1,3 +1,4 @@
---


- name: Include new vars in matrix_vars.yml - name: Include new vars in matrix_vars.yml
include_vars: include_vars:


+ 3
- 2
roles/matrix-awx/tasks/purge_database_build_list.yml Просмотреть файл

@@ -1,10 +1,11 @@
---


- name: Collect entire room list into stdout - name: Collect entire room list into stdout
shell: | shell: |
curl -X GET --header "Authorization: Bearer {{ janitors_token.stdout[1:-1] }}" '{{ synapse_container_ip.stdout }}:8008/_synapse/admin/v1/rooms?from={{ item }}' curl -X GET --header "Authorization: Bearer {{ janitors_token.stdout[1:-1] }}" '{{ synapse_container_ip.stdout }}:8008/_synapse/admin/v1/rooms?from={{ item }}'
register: rooms_output
register: awx_rooms_output
- name: Print stdout to file - name: Print stdout to file
delegate_to: 127.0.0.1 delegate_to: 127.0.0.1
shell: | shell: |
echo '{{ rooms_output.stdout }}' >> /tmp/{{ subscription_id }}_room_list_complete.json
echo '{{ awx_rooms_output.stdout }}' >> /tmp/{{ subscription_id }}_room_list_complete.json

+ 4
- 3
roles/matrix-awx/tasks/purge_database_events.yml Просмотреть файл

@@ -1,12 +1,13 @@
---


- name: Purge all rooms with more then N events - name: Purge all rooms with more then N events
shell: | shell: |
curl --header "Authorization: Bearer {{ janitors_token.stdout[1:-1] }}" -X POST -H "Content-Type: application/json" -d '{ "delete_local_events": false, "purge_up_to_ts": {{ purge_epoche_time.stdout }}000 }' "{{ synapse_container_ip.stdout }}:8008/_synapse/admin/v1/purge_history/{{ item[1:-1] }}"
register: purge_command
curl --header "Authorization: Bearer {{ awx_janitors_token.stdout[1:-1] }}" -X POST -H "Content-Type: application/json" -d '{ "delete_local_events": false, "purge_up_to_ts": {{ awx_purge_epoche_time.stdout }}000 }' "{{ awx_synapse_container_ip.stdout }}:8008/_synapse/admin/v1/purge_history/{{ item[1:-1] }}"
register: awx_purge_command


- name: Print output of purge command - name: Print output of purge command
debug: debug:
msg: "{{ purge_command.stdout }}"
msg: "{{ awx_purge_command.stdout }}"


- name: Pause for 5 seconds to let Synapse breathe - name: Pause for 5 seconds to let Synapse breathe
pause: pause:


+ 72
- 71
roles/matrix-awx/tasks/purge_database_main.yml Просмотреть файл

@@ -1,3 +1,4 @@
---


- name: Ensure dateutils and curl is installed in AWX - name: Ensure dateutils and curl is installed in AWX
delegate_to: 127.0.0.1 delegate_to: 127.0.0.1
@@ -19,20 +20,20 @@


- name: Collect before shrink size of Synapse database - name: Collect before shrink size of Synapse database
shell: du -sh /matrix/postgres/data shell: du -sh /matrix/postgres/data
register: db_size_before_stat
when: (purge_mode.find("Perform final shrink") != -1)
register: awx_db_size_before_stat
when: (awx_purge_mode.find("Perform final shrink") != -1)
no_log: True no_log: True


- name: Collect the internal IP of the matrix-synapse container - name: Collect the internal IP of the matrix-synapse container
shell: "/usr/bin/docker inspect --format '{''{range.NetworkSettings.Networks}''}{''{.IPAddress}''}{''{end}''}' matrix-synapse" shell: "/usr/bin/docker inspect --format '{''{range.NetworkSettings.Networks}''}{''{.IPAddress}''}{''{end}''}' matrix-synapse"
when: (purge_mode.find("No local users [recommended]") != -1) or (purge_mode.find("Number of users [slower]") != -1) or (purge_mode.find("Number of events [slower]") != -1)
register: synapse_container_ip
when: (awx_purge_mode.find("No local users [recommended]") != -1) or (awx_purge_mode.find("Number of users [slower]") != -1) or (awx_purge_mode.find("Number of events [slower]") != -1)
register: awx_synapse_container_ip


- name: Collect access token for janitor user - name: Collect access token for janitor user
shell: | shell: |
curl -X POST -d '{"type":"m.login.password", "user":"janitor", "password":"{{ matrix_awx_janitor_user_password }}"}' "{{ synapse_container_ip.stdout }}:8008/_matrix/client/r0/login" | jq '.access_token'
when: (purge_mode.find("No local users [recommended]") != -1) or (purge_mode.find("Number of users [slower]") != -1) or (purge_mode.find("Number of events [slower]") != -1)
register: janitors_token
curl -X POST -d '{"type":"m.login.password", "user":"janitor", "password":"{{ awx_janitor_user_password }}"}' "{{ awx_synapse_container_ip.stdout }}:8008/_matrix/client/r0/login" | jq '.access_token'
when: (awx_purge_mode.find("No local users [recommended]") != -1) or (awx_purge_mode.find("Number of users [slower]") != -1) or (awx_purge_mode.find("Number of events [slower]") != -1)
register: awx_janitors_token
no_log: True no_log: True


- name: Copy build_room_list.py script to target machine - name: Copy build_room_list.py script to target machine
@@ -42,107 +43,107 @@
owner: matrix owner: matrix
group: matrix group: matrix
mode: '0755' mode: '0755'
when: (purge_mode.find("No local users [recommended]") != -1) or (purge_mode.find("Number of users [slower]") != -1) or (purge_mode.find("Number of events [slower]") != -1)
when: (awx_purge_mode.find("No local users [recommended]") != -1) or (awx_purge_mode.find("Number of users [slower]") != -1) or (awx_purge_mode.find("Number of events [slower]") != -1)


- name: Run build_room_list.py script - name: Run build_room_list.py script
shell: | shell: |
runuser -u matrix -- python3 /usr/local/bin/matrix_build_room_list.py {{ janitors_token.stdout[1:-1] }} {{ synapse_container_ip.stdout }}
register: rooms_total
when: (purge_mode.find("No local users [recommended]") != -1) or (purge_mode.find("Number of users [slower]") != -1) or (purge_mode.find("Number of events [slower]") != -1)
runuser -u matrix -- python3 /usr/local/bin/matrix_build_room_list.py {{ awx_janitors_token.stdout[1:-1] }} {{ awx_synapse_container_ip.stdout }}
register: awx_rooms_total
when: (awx_purge_mode.find("No local users [recommended]") != -1) or (awx_purge_mode.find("Number of users [slower]") != -1) or (awx_purge_mode.find("Number of events [slower]") != -1)


- name: Fetch complete room list from target machine - name: Fetch complete room list from target machine
fetch: fetch:
src: /tmp/room_list_complete.json src: /tmp/room_list_complete.json
dest: "/tmp/{{ subscription_id }}_room_list_complete.json" dest: "/tmp/{{ subscription_id }}_room_list_complete.json"
flat: yes flat: yes
when: (purge_mode.find("No local users [recommended]") != -1) or (purge_mode.find("Number of users [slower]") != -1) or (purge_mode.find("Number of events [slower]") != -1)
when: (awx_purge_mode.find("No local users [recommended]") != -1) or (awx_purge_mode.find("Number of users [slower]") != -1) or (awx_purge_mode.find("Number of events [slower]") != -1)


- name: Remove complete room list from target machine - name: Remove complete room list from target machine
file: file:
path: /tmp/room_list_complete.json path: /tmp/room_list_complete.json
state: absent state: absent
when: (purge_mode.find("No local users [recommended]") != -1) or (purge_mode.find("Number of users [slower]") != -1) or (purge_mode.find("Number of events [slower]") != -1)
when: (awx_purge_mode.find("No local users [recommended]") != -1) or (awx_purge_mode.find("Number of users [slower]") != -1) or (awx_purge_mode.find("Number of events [slower]") != -1)


- name: Generate list of rooms with no local users - name: Generate list of rooms with no local users
delegate_to: 127.0.0.1 delegate_to: 127.0.0.1
shell: | shell: |
jq 'try .rooms[] | select(.joined_local_members == 0) | .room_id' < /tmp/{{ subscription_id }}_room_list_complete.json > /tmp/{{ subscription_id }}_room_list_no_local_users.txt jq 'try .rooms[] | select(.joined_local_members == 0) | .room_id' < /tmp/{{ subscription_id }}_room_list_complete.json > /tmp/{{ subscription_id }}_room_list_no_local_users.txt
when: (purge_mode.find("No local users [recommended]") != -1) or (purge_mode.find("Number of users [slower]") != -1) or (purge_mode.find("Number of events [slower]") != -1)
when: (awx_purge_mode.find("No local users [recommended]") != -1) or (awx_purge_mode.find("Number of users [slower]") != -1) or (awx_purge_mode.find("Number of events [slower]") != -1)
- name: Count number of rooms with no local users - name: Count number of rooms with no local users
delegate_to: 127.0.0.1 delegate_to: 127.0.0.1
shell: | shell: |
wc -l /tmp/{{ subscription_id }}_room_list_no_local_users.txt | awk '{ print $1 }' wc -l /tmp/{{ subscription_id }}_room_list_no_local_users.txt | awk '{ print $1 }'
register: rooms_no_local_total
when: (purge_mode.find("No local users [recommended]") != -1) or (purge_mode.find("Number of users [slower]") != -1) or (purge_mode.find("Number of events [slower]") != -1)
register: awx_rooms_no_local_total
when: (awx_purge_mode.find("No local users [recommended]") != -1) or (awx_purge_mode.find("Number of users [slower]") != -1) or (awx_purge_mode.find("Number of events [slower]") != -1)


- name: Setting host fact room_list_no_local_users
- name: Setting host fact awx_room_list_no_local_users
set_fact: set_fact:
room_list_no_local_users: "{{ lookup('file', '/tmp/{{ subscription_id }}_room_list_no_local_users.txt') }}"
awx_room_list_no_local_users: "{{ lookup('file', '/tmp/{{ subscription_id }}_room_list_no_local_users.txt') }}"
no_log: True no_log: True
when: (purge_mode.find("No local users [recommended]") != -1) or (purge_mode.find("Number of users [slower]") != -1) or (purge_mode.find("Number of events [slower]") != -1)
when: (awx_purge_mode.find("No local users [recommended]") != -1) or (awx_purge_mode.find("Number of users [slower]") != -1) or (awx_purge_mode.find("Number of events [slower]") != -1)


- name: Purge all rooms with no local users - name: Purge all rooms with no local users
include_tasks: purge_database_no_local.yml
loop: "{{ room_list_no_local_users.splitlines() | flatten(levels=1) }}"
when: (purge_mode.find("No local users [recommended]") != -1) or (purge_mode.find("Number of users [slower]") != -1) or (purge_mode.find("Number of events [slower]") != -1)
include_tasks: awx_purge_database_no_local.yml
loop: "{{ awx_room_list_no_local_users.splitlines() | flatten(levels=1) }}"
when: (awx_purge_mode.find("No local users [recommended]") != -1) or (awx_purge_mode.find("Number of users [slower]") != -1) or (awx_purge_mode.find("Number of events [slower]") != -1)


- name: Collect epoche time from date - name: Collect epoche time from date
delegate_to: 127.0.0.1 delegate_to: 127.0.0.1
shell: | shell: |
date -d '{{ purge_date }}' +"%s"
when: (purge_mode.find("Number of users [slower]") != -1) or (purge_mode.find("Number of events [slower]") != -1)
register: purge_epoche_time
date -d '{{ awx_purge_date }}' +"%s"
when: (awx_purge_mode.find("Number of users [slower]") != -1) or (awx_purge_mode.find("Number of events [slower]") != -1)
register: awx_purge_epoche_time


- name: Generate list of rooms with more then N users - name: Generate list of rooms with more then N users
delegate_to: 127.0.0.1 delegate_to: 127.0.0.1
shell: | shell: |
jq 'try .rooms[] | select(.joined_members > {{ purge_metric_value }}) | .room_id' < /tmp/{{ subscription_id }}_room_list_complete.json > /tmp/{{ subscription_id }}_room_list_joined_members.txt
when: purge_mode.find("Number of users [slower]") != -1
jq 'try .rooms[] | select(.joined_members > {{ awx_purge_metric_value }}) | .room_id' < /tmp/{{ subscription_id }}_room_list_complete.json > /tmp/{{ subscription_id }}_room_list_joined_members.txt
when: awx_purge_mode.find("Number of users [slower]") != -1


- name: Count number of rooms with more then N users - name: Count number of rooms with more then N users
delegate_to: 127.0.0.1 delegate_to: 127.0.0.1
shell: | shell: |
wc -l /tmp/{{ subscription_id }}_room_list_joined_members.txt | awk '{ print $1 }' wc -l /tmp/{{ subscription_id }}_room_list_joined_members.txt | awk '{ print $1 }'
register: rooms_join_members_total
when: purge_mode.find("Number of users [slower]") != -1
register: awx_rooms_join_members_total
when: awx_purge_mode.find("Number of users [slower]") != -1


- name: Setting host fact room_list_joined_members
- name: Setting host fact awx_room_list_joined_members
delegate_to: 127.0.0.1 delegate_to: 127.0.0.1
set_fact: set_fact:
room_list_joined_members: "{{ lookup('file', '/tmp/{{ subscription_id }}_room_list_joined_members.txt') }}"
when: purge_mode.find("Number of users [slower]") != -1
awx_room_list_joined_members: "{{ lookup('file', '/tmp/{{ subscription_id }}_room_list_joined_members.txt') }}"
when: awx_purge_mode.find("Number of users [slower]") != -1
no_log: True no_log: True


- name: Purge all rooms with more then N users - name: Purge all rooms with more then N users
include_tasks: purge_database_users.yml
loop: "{{ room_list_joined_members.splitlines() | flatten(levels=1) }}"
when: purge_mode.find("Number of users [slower]") != -1
include_tasks: awx_purge_database_users.yml
loop: "{{ awx_room_list_joined_members.splitlines() | flatten(levels=1) }}"
when: awx_purge_mode.find("Number of users [slower]") != -1


- name: Generate list of rooms with more then N events - name: Generate list of rooms with more then N events
delegate_to: 127.0.0.1 delegate_to: 127.0.0.1
shell: | shell: |
jq 'try .rooms[] | select(.state_events > {{ purge_metric_value }}) | .room_id' < /tmp/{{ subscription_id }}_room_list_complete.json > /tmp/{{ subscription_id }}_room_list_state_events.txt
when: purge_mode.find("Number of events [slower]") != -1
jq 'try .rooms[] | select(.state_events > {{ awx_purge_metric_value }}) | .room_id' < /tmp/{{ subscription_id }}_room_list_complete.json > /tmp/{{ subscription_id }}_room_list_state_events.txt
when: awx_purge_mode.find("Number of events [slower]") != -1


- name: Count number of rooms with more then N events - name: Count number of rooms with more then N events
delegate_to: 127.0.0.1 delegate_to: 127.0.0.1
shell: | shell: |
wc -l /tmp/{{ subscription_id }}_room_list_state_events.txt | awk '{ print $1 }' wc -l /tmp/{{ subscription_id }}_room_list_state_events.txt | awk '{ print $1 }'
register: rooms_state_events_total
when: purge_mode.find("Number of events [slower]") != -1
register: awx_rooms_state_events_total
when: awx_purge_mode.find("Number of events [slower]") != -1


- name: Setting host fact room_list_state_events
- name: Setting host fact awx_room_list_state_events
delegate_to: 127.0.0.1 delegate_to: 127.0.0.1
set_fact: set_fact:
room_list_state_events: "{{ lookup('file', '/tmp/{{ subscription_id }}_room_list_state_events.txt') }}"
when: purge_mode.find("Number of events [slower]") != -1
awx_room_list_state_events: "{{ lookup('file', '/tmp/{{ subscription_id }}_room_list_state_events.txt') }}"
when: awx_purge_mode.find("Number of events [slower]") != -1
no_log: True no_log: True


- name: Purge all rooms with more then N events - name: Purge all rooms with more then N events
include_tasks: purge_database_events.yml
loop: "{{ room_list_state_events.splitlines() | flatten(levels=1) }}"
when: purge_mode.find("Number of events [slower]") != -1
include_tasks: awx_purge_database_events.yml
loop: "{{ awx_room_list_state_events.splitlines() | flatten(levels=1) }}"
when: awx_purge_mode.find("Number of events [slower]") != -1


- name: Adjust 'Deploy/Update a Server' job template - name: Adjust 'Deploy/Update a Server' job template
delegate_to: 127.0.0.1 delegate_to: 127.0.0.1
@@ -161,7 +162,7 @@
tower_host: "https://{{ awx_host }}" tower_host: "https://{{ awx_host }}"
tower_oauthtoken: "{{ awx_session_token.ansible_facts.tower_token.token }}" tower_oauthtoken: "{{ awx_session_token.ansible_facts.tower_token.token }}"
validate_certs: yes validate_certs: yes
when: (purge_mode.find("No local users [recommended]") != -1) or (purge_mode.find("Number of users [slower]") != -1) or (purge_mode.find("Number of events [slower]") != -1) or (purge_mode.find("Skip purging rooms [faster]") != -1)
when: (awx_purge_mode.find("No local users [recommended]") != -1) or (awx_purge_mode.find("Number of users [slower]") != -1) or (awx_purge_mode.find("Number of events [slower]") != -1) or (awx_purge_mode.find("Skip purging rooms [faster]") != -1)


- name: Execute rust-synapse-compress-state job template - name: Execute rust-synapse-compress-state job template
delegate_to: 127.0.0.1 delegate_to: 127.0.0.1
@@ -171,7 +172,7 @@
tower_host: "https://{{ awx_host }}" tower_host: "https://{{ awx_host }}"
tower_oauthtoken: "{{ awx_session_token.ansible_facts.tower_token.token }}" tower_oauthtoken: "{{ awx_session_token.ansible_facts.tower_token.token }}"
validate_certs: yes validate_certs: yes
when: (purge_mode.find("No local users [recommended]") != -1) or (purge_mode.find("Number of users [slower]") != -1) or (purge_mode.find("Number of events [slower]") != -1) or (purge_mode.find("Skip purging rooms [faster]") != -1)
when: (awx_purge_mode.find("No local users [recommended]") != -1) or (awx_purge_mode.find("Number of users [slower]") != -1) or (awx_purge_mode.find("Number of events [slower]") != -1) or (awx_purge_mode.find("Skip purging rooms [faster]") != -1)


- name: Revert 'Deploy/Update a Server' job template - name: Revert 'Deploy/Update a Server' job template
delegate_to: 127.0.0.1 delegate_to: 127.0.0.1
@@ -190,25 +191,25 @@
tower_host: "https://{{ awx_host }}" tower_host: "https://{{ awx_host }}"
tower_oauthtoken: "{{ awx_session_token.ansible_facts.tower_token.token }}" tower_oauthtoken: "{{ awx_session_token.ansible_facts.tower_token.token }}"
validate_certs: yes validate_certs: yes
when: (purge_mode.find("No local users [recommended]") != -1) or (purge_mode.find("Number of users [slower]") != -1) or (purge_mode.find("Number of events [slower]") != -1) or (purge_mode.find("Skip purging rooms [faster]") != -1)
when: (awx_purge_mode.find("No local users [recommended]") != -1) or (awx_purge_mode.find("Number of users [slower]") != -1) or (awx_purge_mode.find("Number of events [slower]") != -1) or (awx_purge_mode.find("Skip purging rooms [faster]") != -1)


- name: Ensure matrix-synapse is stopped - name: Ensure matrix-synapse is stopped
service: service:
name: matrix-synapse name: matrix-synapse
state: stopped state: stopped
daemon_reload: yes daemon_reload: yes
when: (purge_mode.find("Perform final shrink") != -1)
when: (awx_purge_mode.find("Perform final shrink") != -1)


- name: Re-index Synapse database - name: Re-index Synapse database
shell: docker exec -i matrix-postgres psql "host=127.0.0.1 port=5432 dbname=synapse user=synapse password={{ matrix_synapse_connection_password }}" -c 'REINDEX (VERBOSE) DATABASE synapse' shell: docker exec -i matrix-postgres psql "host=127.0.0.1 port=5432 dbname=synapse user=synapse password={{ matrix_synapse_connection_password }}" -c 'REINDEX (VERBOSE) DATABASE synapse'
when: (purge_mode.find("Perform final shrink") != -1)
when: (awx_purge_mode.find("Perform final shrink") != -1)


- name: Ensure matrix-synapse is started - name: Ensure matrix-synapse is started
service: service:
name: matrix-synapse name: matrix-synapse
state: started state: started
daemon_reload: yes daemon_reload: yes
when: (purge_mode.find("Perform final shrink") != -1)
when: (awx_purge_mode.find("Perform final shrink") != -1)


- name: Adjust 'Deploy/Update a Server' job template - name: Adjust 'Deploy/Update a Server' job template
delegate_to: 127.0.0.1 delegate_to: 127.0.0.1
@@ -227,7 +228,7 @@
tower_host: "https://{{ awx_host }}" tower_host: "https://{{ awx_host }}"
tower_oauthtoken: "{{ awx_session_token.ansible_facts.tower_token.token }}" tower_oauthtoken: "{{ awx_session_token.ansible_facts.tower_token.token }}"
validate_certs: yes validate_certs: yes
when: (purge_mode.find("Perform final shrink") != -1)
when: (awx_purge_mode.find("Perform final shrink") != -1)


- name: Execute run-postgres-vacuum job template - name: Execute run-postgres-vacuum job template
delegate_to: 127.0.0.1 delegate_to: 127.0.0.1
@@ -237,7 +238,7 @@
tower_host: "https://{{ awx_host }}" tower_host: "https://{{ awx_host }}"
tower_oauthtoken: "{{ awx_session_token.ansible_facts.tower_token.token }}" tower_oauthtoken: "{{ awx_session_token.ansible_facts.tower_token.token }}"
validate_certs: yes validate_certs: yes
when: (purge_mode.find("Perform final shrink") != -1)
when: (awx_purge_mode.find("Perform final shrink") != -1)


- name: Revert 'Deploy/Update a Server' job template - name: Revert 'Deploy/Update a Server' job template
delegate_to: 127.0.0.1 delegate_to: 127.0.0.1
@@ -256,50 +257,50 @@
tower_host: "https://{{ awx_host }}" tower_host: "https://{{ awx_host }}"
tower_oauthtoken: "{{ awx_session_token.ansible_facts.tower_token.token }}" tower_oauthtoken: "{{ awx_session_token.ansible_facts.tower_token.token }}"
validate_certs: yes validate_certs: yes
when: (purge_mode.find("Perform final shrink") != -1)
when: (awx_purge_mode.find("Perform final shrink") != -1)


- name: Cleanup room_list files - name: Cleanup room_list files
delegate_to: 127.0.0.1 delegate_to: 127.0.0.1
shell: | shell: |
rm /tmp/{{ subscription_id }}_room_list* rm /tmp/{{ subscription_id }}_room_list*
when: (purge_mode.find("No local users [recommended]") != -1) or (purge_mode.find("Number of users [slower]") != -1) or (purge_mode.find("Number of events [slower]") != -1)
when: (awx_purge_mode.find("No local users [recommended]") != -1) or (awx_purge_mode.find("Number of users [slower]") != -1) or (awx_purge_mode.find("Number of events [slower]") != -1)
ignore_errors: yes ignore_errors: yes


- name: Collect after shrink size of Synapse database - name: Collect after shrink size of Synapse database
shell: du -sh /matrix/postgres/data shell: du -sh /matrix/postgres/data
register: db_size_after_stat
when: (purge_mode.find("Perform final shrink") != -1)
register: awx_db_size_after_stat
when: (awx_purge_mode.find("Perform final shrink") != -1)
no_log: True no_log: True


- name: Print total number of rooms processed - name: Print total number of rooms processed
debug: debug:
msg: '{{ rooms_total.stdout }}'
when: (purge_mode.find("No local users [recommended]") != -1) or (purge_mode.find("Number of users [slower]") != -1) or (purge_mode.find("Number of events [slower]") != -1)
msg: '{{ awx_rooms_total.stdout }}'
when: (awx_purge_mode.find("No local users [recommended]") != -1) or (awx_purge_mode.find("Number of users [slower]") != -1) or (awx_purge_mode.find("Number of events [slower]") != -1)


- name: Print the number of rooms purged with no local users - name: Print the number of rooms purged with no local users
debug: debug:
msg: '{{ rooms_no_local_total.stdout }}'
when: (purge_mode.find("No local users [recommended]") != -1) or (purge_mode.find("Number of users [slower]") != -1) or (purge_mode.find("Number of events [slower]") != -1)
msg: '{{ awx_rooms_no_local_total.stdout }}'
when: (awx_purge_mode.find("No local users [recommended]") != -1) or (awx_purge_mode.find("Number of users [slower]") != -1) or (awx_purge_mode.find("Number of events [slower]") != -1)


- name: Print the number of rooms purged with more then N users - name: Print the number of rooms purged with more then N users
debug: debug:
msg: '{{ rooms_join_members_total.stdout }}'
when: purge_mode.find("Number of users") != -1
msg: '{{ awx_rooms_join_members_total.stdout }}'
when: awx_purge_mode.find("Number of users") != -1


- name: Print the number of rooms purged with more then N events - name: Print the number of rooms purged with more then N events
debug: debug:
msg: '{{ rooms_state_events_total.stdout }}'
when: purge_mode.find("Number of events") != -1
msg: '{{ awx_rooms_state_events_total.stdout }}'
when: awx_purge_mode.find("Number of events") != -1


- name: Print before purge size of Synapse database - name: Print before purge size of Synapse database
debug: debug:
msg: "{{ db_size_before_stat.stdout.split('\n') }}"
when: (db_size_before_stat is defined) and (purge_mode.find("Perform final shrink") != -1)
msg: "{{ awx_db_size_before_stat.stdout.split('\n') }}"
when: ( awx_db_size_before_stat is defined ) and ( awx_purge_mode.find("Perform final shrink" ) != -1 )


- name: Print after purge size of Synapse database - name: Print after purge size of Synapse database
debug: debug:
msg: "{{ db_size_after_stat.stdout.split('\n') }}"
when: (db_size_after_stat is defined) and (purge_mode.find("Perform final shrink") != -1)
msg: "{{ awx_db_size_after_stat.stdout.split('\n') }}"
when: (awx_db_size_after_stat is defined) and (awx_purge_mode.find("Perform final shrink") != -1)


- name: Delete the AWX session token for executing modules - name: Delete the AWX session token for executing modules
awx.awx.tower_token: awx.awx.tower_token:
@@ -312,8 +313,8 @@


- name: Set boolean value to exit playbook - name: Set boolean value to exit playbook
set_fact: set_fact:
end_playbook: true
awx_end_playbook: true


- name: End playbook early if this task is called. - name: End playbook early if this task is called.
meta: end_play meta: end_play
when: end_playbook is defined and end_playbook|bool
when: awx_end_playbook is defined and awx_end_playbook|bool

+ 4
- 3
roles/matrix-awx/tasks/purge_database_no_local.yml Просмотреть файл

@@ -1,12 +1,13 @@
---


- name: Purge all rooms with no local users - name: Purge all rooms with no local users
shell: | shell: |
curl --header "Authorization: Bearer {{ janitors_token.stdout[1:-1] }}" -X POST -H "Content-Type: application/json" -d '{ "room_id": {{ item }} }' '{{ synapse_container_ip.stdout }}:8008/_synapse/admin/v1/purge_room'
register: purge_command
curl --header "Authorization: Bearer {{ awx_janitors_token.stdout[1:-1] }}" -X POST -H "Content-Type: application/json" -d '{ "room_id": {{ item }} }' '{{ awx_synapse_container_ip.stdout }}:8008/_synapse/admin/v1/purge_room'
register: awx_purge_command
- name: Print output of purge command - name: Print output of purge command
debug: debug:
msg: "{{ purge_command.stdout }}"
msg: "{{ awx_purge_command.stdout }}"


- name: Pause for 5 seconds to let Synapse breathe - name: Pause for 5 seconds to let Synapse breathe
pause: pause:


+ 4
- 3
roles/matrix-awx/tasks/purge_database_users.yml Просмотреть файл

@@ -1,12 +1,13 @@
---


- name: Purge all rooms with more then N users - name: Purge all rooms with more then N users
shell: | shell: |
curl --header "Authorization: Bearer {{ janitors_token.stdout[1:-1] }}" -X POST -H "Content-Type: application/json" -d '{ "delete_local_events": false, "purge_up_to_ts": {{ purge_epoche_time.stdout }}000 }' "{{ synapse_container_ip.stdout }}:8008/_synapse/admin/v1/purge_history/{{ item[1:-1] }}"
register: purge_command
curl --header "Authorization: Bearer {{ awx_janitors_token.stdout[1:-1] }}" -X POST -H "Content-Type: application/json" -d '{ "delete_local_events": false, "purge_up_to_ts": {{ awx_purge_epoche_time.stdout }}000 }' "{{ awx_synapse_container_ip.stdout }}:8008/_synapse/admin/v1/purge_history/{{ item[1:-1] }}"
register: awx_purge_command
- name: Print output of purge command - name: Print output of purge command
debug: debug:
msg: "{{ purge_command.stdout }}"
msg: "{{ awx_purge_command.stdout }}"


- name: Pause for 5 seconds to let Synapse breathe - name: Pause for 5 seconds to let Synapse breathe
pause: pause:


+ 5
- 4
roles/matrix-awx/tasks/purge_media_local.yml Просмотреть файл

@@ -1,17 +1,18 @@
---


- name: Collect epoche time from date - name: Collect epoche time from date
shell: | shell: |
date -d '{{ item }}' +"%s" date -d '{{ item }}' +"%s"
register: epoche_time
register: awx_epoche_time


- name: Purge local media to specific date - name: Purge local media to specific date
shell: | shell: |
curl -X POST --header "Authorization: Bearer {{ janitors_token.stdout[1:-1] }}" '{{ synapse_container_ip.stdout }}:8008/_synapse/admin/v1/media/matrix.{{ matrix_domain }}/delete?before_ts={{ epoche_time.stdout }}000'
register: purge_command
curl -X POST --header "Authorization: Bearer {{ awx_janitors_token.stdout[1:-1] }}" '{{ awx_synapse_container_ip.stdout }}:8008/_synapse/admin/v1/media/matrix.{{ matrix_domain }}/delete?before_ts={{ awx_epoche_time.stdout }}000'
register: awx_purge_command
- name: Print output of purge command - name: Print output of purge command
debug: debug:
msg: "{{ purge_command.stdout }}"
msg: "{{ awx_purge_command.stdout }}"


- name: Pause for 5 seconds to let Synapse breathe - name: Pause for 5 seconds to let Synapse breathe
pause: pause:


+ 26
- 26
roles/matrix-awx/tasks/purge_media_main.yml Просмотреть файл

@@ -19,76 +19,76 @@


- name: Collect the internal IP of the matrix-synapse container - name: Collect the internal IP of the matrix-synapse container
shell: "/usr/bin/docker inspect --format '{''{range.NetworkSettings.Networks}''}{''{.IPAddress}''}{''{end}''}' matrix-synapse" shell: "/usr/bin/docker inspect --format '{''{range.NetworkSettings.Networks}''}{''{.IPAddress}''}{''{end}''}' matrix-synapse"
register: synapse_container_ip
register: awx_synapse_container_ip


- name: Collect access token for janitor user - name: Collect access token for janitor user
shell: | shell: |
curl -XPOST -d '{"type":"m.login.password", "user":"janitor", "password":"{{ matrix_awx_janitor_user_password }}"}' "{{ synapse_container_ip.stdout }}:8008/_matrix/client/r0/login" | jq '.access_token'
register: janitors_token
curl -XPOST -d '{"type":"m.login.password", "user":"janitor", "password":"{{ awx_janitor_user_password }}"}' "{{ awx_synapse_container_ip.stdout }}:8008/_matrix/client/r0/login" | jq '.access_token'
register: awx_janitors_token
no_log: True no_log: True


- name: Generate list of dates to purge to - name: Generate list of dates to purge to
delegate_to: 127.0.0.1 delegate_to: 127.0.0.1
shell: "dateseq {{ matrix_purge_from_date }} {{ matrix_purge_to_date }}" shell: "dateseq {{ matrix_purge_from_date }} {{ matrix_purge_to_date }}"
register: purge_dates
register: awx_purge_dates
- name: Calculate initial size of local media repository - name: Calculate initial size of local media repository
shell: du -sh /matrix/synapse/storage/media-store/local* shell: du -sh /matrix/synapse/storage/media-store/local*
register: local_media_size_before
when: matrix_purge_media_type == "Local Media"
register: awx_local_media_size_before
when: awx_purge_media_type == "Local Media"
ignore_errors: yes ignore_errors: yes
no_log: True no_log: True


- name: Calculate initial size of remote media repository - name: Calculate initial size of remote media repository
shell: du -sh /matrix/synapse/storage/media-store/remote* shell: du -sh /matrix/synapse/storage/media-store/remote*
register: remote_media_size_before
when: matrix_purge_media_type == "Remote Media"
register: awx_remote_media_size_before
when: awx_purge_media_type == "Remote Media"
ignore_errors: yes ignore_errors: yes
no_log: True no_log: True


- name: Purge local media with loop - name: Purge local media with loop
include_tasks: purge_media_local.yml include_tasks: purge_media_local.yml
loop: "{{ purge_dates.stdout_lines | flatten(levels=1) }}"
when: matrix_purge_media_type == "Local Media"
loop: "{{ awx_purge_dates.stdout_lines | flatten(levels=1) }}"
when: awx_purge_media_type == "Local Media"


- name: Purge remote media with loop - name: Purge remote media with loop
include_tasks: purge_media_remote.yml include_tasks: purge_media_remote.yml
loop: "{{ purge_dates.stdout_lines | flatten(levels=1) }}"
when: matrix_purge_media_type == "Remote Media"
loop: "{{ awx_purge_dates.stdout_lines | flatten(levels=1) }}"
when: awx_purge_media_type == "Remote Media"


- name: Calculate final size of local media repository - name: Calculate final size of local media repository
shell: du -sh /matrix/synapse/storage/media-store/local* shell: du -sh /matrix/synapse/storage/media-store/local*
register: local_media_size_after
when: matrix_purge_media_type == "Local Media"
register: awx_local_media_size_after
when: awx_purge_media_type == "Local Media"
ignore_errors: yes ignore_errors: yes
no_log: True no_log: True


- name: Calculate final size of remote media repository - name: Calculate final size of remote media repository
shell: du -sh /matrix/synapse/storage/media-store/remote* shell: du -sh /matrix/synapse/storage/media-store/remote*
register: remote_media_size_after
when: matrix_purge_media_type == "Remote Media"
register: awx_remote_media_size_after
when: awx_purge_media_type == "Remote Media"
ignore_errors: yes ignore_errors: yes
no_log: True no_log: True


- name: Print size of local media repository before purge - name: Print size of local media repository before purge
debug: debug:
msg: "{{ local_media_size_before.stdout.split('\n') }}"
when: matrix_purge_media_type == "Local Media"
msg: "{{ awx_local_media_size_before.stdout.split('\n') }}"
when: awx_purge_media_type == "Local Media"


- name: Print size of local media repository after purge - name: Print size of local media repository after purge
debug: debug:
msg: "{{ local_media_size_after.stdout.split('\n') }}"
when: matrix_purge_media_type == "Local Media"
msg: "{{ awx_local_media_size_after.stdout.split('\n') }}"
when: awx_purge_media_type == "Local Media"


- name: Print size of remote media repository before purge - name: Print size of remote media repository before purge
debug: debug:
msg: "{{ remote_media_size_before.stdout.split('\n') }}"
when: matrix_purge_media_type == "Remote Media"
msg: "{{ awx_remote_media_size_before.stdout.split('\n') }}"
when: awx_purge_media_type == "Remote Media"


- name: Print size of remote media repository after purge - name: Print size of remote media repository after purge
debug: debug:
msg: "{{ remote_media_size_after.stdout.split('\n') }}"
when: matrix_purge_media_type == "Remote Media"
msg: "{{ awx_remote_media_size_after.stdout.split('\n') }}"
when: awx_purge_media_type == "Remote Media"


- name: Delete the AWX session token for executing modules - name: Delete the AWX session token for executing modules
awx.awx.tower_token: awx.awx.tower_token:
@@ -101,8 +101,8 @@


- name: Set boolean value to exit playbook - name: Set boolean value to exit playbook
set_fact: set_fact:
end_playbook: true
awx_end_playbook: true


- name: End playbook early if this task is called. - name: End playbook early if this task is called.
meta: end_play meta: end_play
when: end_playbook is defined and end_playbook|bool
when: awx_end_playbook is defined and awx_end_playbook|bool

+ 5
- 4
roles/matrix-awx/tasks/purge_media_remote.yml Просмотреть файл

@@ -1,17 +1,18 @@
---


- name: Collect epoche time from date - name: Collect epoche time from date
shell: | shell: |
date -d '{{ item }}' +"%s" date -d '{{ item }}' +"%s"
register: epoche_time
register: awx_epoche_time


- name: Purge remote media to specific date - name: Purge remote media to specific date
shell: | shell: |
curl -X POST --header "Authorization: Bearer {{ janitors_token.stdout[1:-1] }}" '{{ synapse_container_ip.stdout }}:8008/_synapse/admin/v1/purge_media_cache?before_ts={{ epoche_time.stdout }}000'
register: purge_command
curl -X POST --header "Authorization: Bearer {{ awx_janitors_token.stdout[1:-1] }}" '{{ awx_synapse_container_ip.stdout }}:8008/_synapse/admin/v1/purge_media_cache?before_ts={{ awx_epoche_time.stdout }}000'
register: awx_purge_command
- name: Print output of purge command - name: Print output of purge command
debug: debug:
msg: "{{ purge_command.stdout }}"
msg: "{{ awx_purge_command.stdout }}"


- name: Pause for 5 seconds to let Synapse breathe - name: Pause for 5 seconds to let Synapse breathe
pause: pause:


+ 1
- 0
roles/matrix-awx/tasks/rename_variables.yml Просмотреть файл

@@ -1,3 +1,4 @@
---


- name: Rename synapse presence variable - name: Rename synapse presence variable
delegate_to: 127.0.0.1 delegate_to: 127.0.0.1


+ 1
- 0
roles/matrix-awx/tasks/rotate_ssh.yml Просмотреть файл

@@ -1,3 +1,4 @@
---


- name: Set the new authorized key taken from file - name: Set the new authorized key taken from file
authorized_key: authorized_key:


+ 46
- 45
roles/matrix-awx/tasks/self_check.yml Просмотреть файл

@@ -1,3 +1,4 @@
---


- name: Install prerequisite apt packages on target - name: Install prerequisite apt packages on target
apt: apt:
@@ -23,83 +24,83 @@
- name: Calculate MAU value - name: Calculate MAU value
shell: | shell: |
curl -s localhost:9000 | grep "^synapse_admin_mau_current " curl -s localhost:9000 | grep "^synapse_admin_mau_current "
register: mau_stat
register: awx_mau_stat
no_log: True no_log: True


- name: Print MAU value
debug:
msg: "{{ mau_stat.stdout.split('\n') }}"
when: mau_stat is defined

- name: Calculate CPU usage statistics - name: Calculate CPU usage statistics
shell: iostat -c shell: iostat -c
register: cpu_usage_stat
register: awx_cpu_usage_stat
no_log: True no_log: True


- name: Print CPU usage statistics
debug:
msg: "{{ cpu_usage_stat.stdout.split('\n') }}"
when: cpu_usage_stat is defined

- name: Calculate RAM usage statistics - name: Calculate RAM usage statistics
shell: free -mh shell: free -mh
register: ram_usage_stat
register: awx_ram_usage_stat
no_log: True no_log: True


- name: Print RAM usage statistics
debug:
msg: "{{ ram_usage_stat.stdout.split('\n') }}"
when: ram_usage_stat is defined

- name: Calculate free disk space - name: Calculate free disk space
shell: df -h shell: df -h
register: disk_space_stat
register: awx_disk_space_stat
no_log: True no_log: True


- name: Print free disk space
debug:
msg: "{{ disk_space_stat.stdout.split('\n') }}"
when: disk_space_stat is defined

- name: Calculate size of Synapse database - name: Calculate size of Synapse database
shell: du -sh /matrix/postgres/data shell: du -sh /matrix/postgres/data
register: db_size_stat
register: awx_db_size_stat
no_log: True no_log: True


- name: Print size of Synapse database
debug:
msg: "{{ db_size_stat.stdout.split('\n') }}"
when: db_size_stat is defined

- name: Calculate size of local media repository - name: Calculate size of local media repository
shell: du -sh /matrix/synapse/storage/media-store/local* shell: du -sh /matrix/synapse/storage/media-store/local*
register: local_media_size_stat
register: awx_local_media_size_stat
ignore_errors: yes ignore_errors: yes
no_log: True no_log: True


- name: Print size of local media repository
debug:
msg: "{{ local_media_size_stat.stdout.split('\n') }}"
when: local_media_size_stat is defined

- name: Calculate size of remote media repository - name: Calculate size of remote media repository
shell: du -sh /matrix/synapse/storage/media-store/remote* shell: du -sh /matrix/synapse/storage/media-store/remote*
register: remote_media_size_stat
register: awx_remote_media_size_stat
ignore_errors: yes ignore_errors: yes
no_log: True no_log: True


- name: Print size of remote media repository
debug:
msg: "{{ remote_media_size_stat.stdout.split('\n') }}"
when: remote_media_size_stat is defined

- name: Calculate docker container statistics - name: Calculate docker container statistics
shell: docker stats --all --no-stream shell: docker stats --all --no-stream
register: docker_stats
register: awx_docker_stats
ignore_errors: yes ignore_errors: yes
no_log: True no_log: True


- name: Print size of remote media repository
debug:
msg: "{{ awx_remote_media_size_stat.stdout.split('\n') }}"
when: awx_remote_media_size_stat is defined
- name: Print size of local media repository
debug:
msg: "{{ awx_local_media_size_stat.stdout.split('\n') }}"
when: awx_local_media_size_stat is defined

- name: Print size of Synapse database
debug:
msg: "{{ awx_db_size_stat.stdout.split('\n') }}"
when: awx_db_size_stat is defined

- name: Print free disk space
debug:
msg: "{{ awx_disk_space_stat.stdout.split('\n') }}"
when: awx_disk_space_stat is defined

- name: Print RAM usage statistics
debug:
msg: "{{ awx_ram_usage_stat.stdout.split('\n') }}"
when: awx_ram_usage_stat is defined

- name: Print CPU usage statistics
debug:
msg: "{{ awx_cpu_usage_stat.stdout.split('\n') }}"
when: awx_cpu_usage_stat is defined

- name: Print MAU value
debug:
msg: "{{ awx_mau_stat.stdout.split('\n') }}"
when: awx_mau_stat is defined

- name: Print docker container statistics - name: Print docker container statistics
debug: debug:
msg: "{{ docker_stats.stdout.split('\n') }}"
when: docker_stats is defined
msg: "{{ awx_docker_stats.stdout.split('\n') }}"
when: awx_docker_stats is defined

+ 14
- 13
roles/matrix-awx/tasks/set_variables_corporal.yml Просмотреть файл

@@ -1,3 +1,4 @@
---


- name: Record Corporal Enabled/Disabled variable - name: Record Corporal Enabled/Disabled variable
delegate_to: 127.0.0.1 delegate_to: 127.0.0.1
@@ -62,7 +63,7 @@
insertafter: '# Corporal Settings Start' insertafter: '# Corporal Settings Start'
with_dict: with_dict:
'matrix_corporal_http_api_enabled': 'false' 'matrix_corporal_http_api_enabled': 'false'
when: (matrix_corporal_policy_provider_mode == "Simple Static File") or (not matrix_corporal_enabled|bool)
when: (awx_corporal_policy_provider_mode == "Simple Static File") or (not matrix_corporal_enabled|bool)


- name: Enable Corporal API if Push/Pull mode delected - name: Enable Corporal API if Push/Pull mode delected
delegate_to: 127.0.0.1 delegate_to: 127.0.0.1
@@ -73,7 +74,7 @@
insertafter: '# Corporal Settings Start' insertafter: '# Corporal Settings Start'
with_dict: with_dict:
'matrix_corporal_http_api_enabled': 'true' 'matrix_corporal_http_api_enabled': 'true'
when: (matrix_corporal_policy_provider_mode != "Simple Static File") and (matrix_corporal_enabled|bool)
when: (awx_corporal_policy_provider_mode != "Simple Static File") and (matrix_corporal_enabled|bool)


- name: Record Corporal API Access Token if it's defined - name: Record Corporal API Access Token if it's defined
delegate_to: 127.0.0.1 delegate_to: 127.0.0.1
@@ -83,8 +84,8 @@
line: "{{ item.key }}: {{ item.value }}" line: "{{ item.key }}: {{ item.value }}"
insertafter: '# Corporal Settings Start' insertafter: '# Corporal Settings Start'
with_dict: with_dict:
'matrix_corporal_http_api_auth_token': '{{ matrix_corporal_http_api_auth_token }}'
when: matrix_corporal_http_api_auth_token|length > 0
'awx_corporal_http_api_auth_token': '{{ awx_corporal_http_api_auth_token }}'
when: awx_corporal_http_api_auth_token|length > 0


- name: Record 'Simple Static File' configuration variables in matrix_vars.yml - name: Record 'Simple Static File' configuration variables in matrix_vars.yml
delegate_to: 127.0.0.1 delegate_to: 127.0.0.1
@@ -97,7 +98,7 @@
"Type": "static_file", "Type": "static_file",
"Path": "/etc/matrix-corporal/corporal-policy.json" "Path": "/etc/matrix-corporal/corporal-policy.json"
} }
when: matrix_corporal_policy_provider_mode == "Simple Static File"
when: awx_corporal_policy_provider_mode == "Simple Static File"


- name: Touch the /matrix/corporal/ directory - name: Touch the /matrix/corporal/ directory
file: file:
@@ -141,12 +142,12 @@


- name: Record 'Simple Static File' configuration content in corporal-policy.json - name: Record 'Simple Static File' configuration content in corporal-policy.json
copy: copy:
content: "{{ matrix_corporal_simple_static_config | string }}"
content: "{{ awx_corporal_simple_static_config | string }}"
dest: "/matrix/corporal/config/corporal-policy.json" dest: "/matrix/corporal/config/corporal-policy.json"
owner: matrix owner: matrix
group: matrix group: matrix
mode: '660' mode: '660'
when: (matrix_corporal_policy_provider_mode == "Simple Static File") and (matrix_corporal_simple_static_config|length > 0)
when: (awx_corporal_policy_provider_mode == "Simple Static File") and (awx_corporal_simple_static_config|length > 0)


- name: Record 'HTTP Pull Mode' configuration variables in matrix_vars.yml - name: Record 'HTTP Pull Mode' configuration variables in matrix_vars.yml
delegate_to: 127.0.0.1 delegate_to: 127.0.0.1
@@ -157,13 +158,13 @@
matrix_corporal_policy_provider_config: | matrix_corporal_policy_provider_config: |
{ {
"Type": "http", "Type": "http",
"Uri": "{{ matrix_corporal_pull_mode_uri }}",
"AuthorizationBearerToken": "{{ matrix_corporal_pull_mode_token }}",
"Uri": "{{ awx_corporal_pull_mode_uri }}",
"AuthorizationBearerToken": "{{ awx_corporal_pull_mode_token }}",
"CachePath": "/var/cache/matrix-corporal/last-policy.json", "CachePath": "/var/cache/matrix-corporal/last-policy.json",
"ReloadIntervalSeconds": 1800, "ReloadIntervalSeconds": 1800,
"TimeoutMilliseconds": 30000 "TimeoutMilliseconds": 30000
} }
when: (matrix_corporal_policy_provider_mode == "HTTP Pull Mode (API Enabled)") and (matrix_corporal_pull_mode_uri|length > 0) and (matrix_corporal_pull_mode_token|length > 0)
when: (awx_corporal_policy_provider_mode == "HTTP Pull Mode (API Enabled)") and (matrix_corporal_pull_mode_uri|length > 0) and (awx_corporal_pull_mode_token|length > 0)


- name: Record 'HTTP Push Mode' configuration variables in matrix_vars.yml - name: Record 'HTTP Push Mode' configuration variables in matrix_vars.yml
delegate_to: 127.0.0.1 delegate_to: 127.0.0.1
@@ -176,7 +177,7 @@
"Type": "last_seen_store_policy", "Type": "last_seen_store_policy",
"CachePath": "/var/cache/matrix-corporal/last-policy.json" "CachePath": "/var/cache/matrix-corporal/last-policy.json"
} }
when: (matrix_corporal_policy_provider_mode == "HTTP Push Mode (API Enabled)")
when: (awx_corporal_policy_provider_mode == "HTTP Push Mode (API Enabled)")


- name: Lower RateLimit if set to 'Normal' - name: Lower RateLimit if set to 'Normal'
delegate_to: 127.0.0.1 delegate_to: 127.0.0.1
@@ -184,7 +185,7 @@
path: '{{ awx_cached_matrix_vars }}' path: '{{ awx_cached_matrix_vars }}'
regexp: ' address:\n per_second: 50\n burst_count: 300\n account:\n per_second: 0.17\n burst_count: 300' regexp: ' address:\n per_second: 50\n burst_count: 300\n account:\n per_second: 0.17\n burst_count: 300'
replace: ' address:\n per_second: 0.17\n burst_count: 3\n account:\n per_second: 0.17\n burst_count: 3' replace: ' address:\n per_second: 0.17\n burst_count: 3\n account:\n per_second: 0.17\n burst_count: 3'
when: matrix_corporal_raise_ratelimits == "Normal"
when: awx_corporal_raise_ratelimits == "Normal"


- name: Raise RateLimit if set to 'Raised' - name: Raise RateLimit if set to 'Raised'
delegate_to: 127.0.0.1 delegate_to: 127.0.0.1
@@ -192,7 +193,7 @@
path: '{{ awx_cached_matrix_vars }}' path: '{{ awx_cached_matrix_vars }}'
regexp: ' address:\n per_second: 0.17\n burst_count: 3\n account:\n per_second: 0.17\n burst_count: 3' regexp: ' address:\n per_second: 0.17\n burst_count: 3\n account:\n per_second: 0.17\n burst_count: 3'
replace: ' address:\n per_second: 50\n burst_count: 300\n account:\n per_second: 0.17\n burst_count: 300' replace: ' address:\n per_second: 50\n burst_count: 300\n account:\n per_second: 0.17\n burst_count: 300'
when: matrix_corporal_raise_ratelimits == "Raised"
when: awx_corporal_raise_ratelimits == "Raised"


- name: Save new 'Configure Corporal' survey.json to the AWX tower - name: Save new 'Configure Corporal' survey.json to the AWX tower
delegate_to: 127.0.0.1 delegate_to: 127.0.0.1


+ 11
- 10
roles/matrix-awx/tasks/set_variables_dimension.yml Просмотреть файл

@@ -1,3 +1,4 @@
---


- name: Include vars in matrix_vars.yml - name: Include vars in matrix_vars.yml
include_vars: include_vars:
@@ -13,8 +14,8 @@


- name: Collect access token of Dimension user - name: Collect access token of Dimension user
shell: | shell: |
curl -X POST --header 'Content-Type: application/json' -d '{ "identifier": { "type": "m.id.user","user": "dimension" }, "password": "{{ matrix_awx_dimension_user_password }}", "type": "m.login.password"}' 'https://matrix.{{ matrix_domain }}/_matrix/client/r0/login' | jq -c '. | {access_token}' | sed 's/.*\":\"//' | sed 's/\"}//'
register: dimension_user_access_token
curl -X POST --header 'Content-Type: application/json' -d '{ "identifier": { "type": "m.id.user","user": "dimension" }, "password": "{{ awx_dimension_user_password }}", "type": "m.login.password"}' 'https://matrix.{{ matrix_domain }}/_matrix/client/r0/login' | jq -c '. | {access_token}' | sed 's/.*\":\"//' | sed 's/\"}//'
register: awx_dimension_user_access_token


- name: Record Synapse variables locally on AWX - name: Record Synapse variables locally on AWX
delegate_to: 127.0.0.1 delegate_to: 127.0.0.1
@@ -25,17 +26,17 @@
insertafter: '# Dimension Settings Start' insertafter: '# Dimension Settings Start'
with_dict: with_dict:
'matrix_dimension_enabled': '{{ matrix_dimension_enabled }}' 'matrix_dimension_enabled': '{{ matrix_dimension_enabled }}'
'matrix_dimension_access_token': '"{{ dimension_user_access_token.stdout }}"'
'matrix_dimension_access_token': '"{{ awx_dimension_user_access_token.stdout }}"'
- name: Set final users list if users are defined - name: Set final users list if users are defined
set_fact: set_fact:
ext_dimension_users_raw_final: "{{ ext_dimension_users_raw }}"
when: ext_dimension_users_raw|length > 0
awx_dimension_users_final: "{{ awx_dimension_users }}"
when: awx_dimension_users | length > 0


- name: Set final users list if no users are defined - name: Set final users list if no users are defined
set_fact: set_fact:
ext_dimension_users_raw_final: '@dimension:{{ matrix_domain }}'
when: ext_dimension_users_raw|length == 0
awx_dimension_users_final: '@dimension:{{ matrix_domain }}'
when: awx_dimension_users | length == 0


- name: Remove Dimension Users - name: Remove Dimension Users
delegate_to: 127.0.0.1 delegate_to: 127.0.0.1
@@ -58,7 +59,7 @@
path: '{{ awx_cached_matrix_vars }}' path: '{{ awx_cached_matrix_vars }}'
insertafter: '^matrix_dimension_admins:' insertafter: '^matrix_dimension_admins:'
line: ' - "{{ item }}"' line: ' - "{{ item }}"'
with_items: "{{ ext_dimension_users_raw_final.splitlines() }}"
with_items: "{{ awx_dimension_users_final.splitlines() }}"


- name: Record Dimension Custom variables locally on AWX - name: Record Dimension Custom variables locally on AWX
delegate_to: 127.0.0.1 delegate_to: 127.0.0.1
@@ -66,9 +67,9 @@
path: '{{ awx_cached_matrix_vars }}' path: '{{ awx_cached_matrix_vars }}'
regexp: "^#? *{{ item.key | regex_escape() }}:" regexp: "^#? *{{ item.key | regex_escape() }}:"
line: "{{ item.key }}: {{ item.value }}" line: "{{ item.key }}: {{ item.value }}"
insertafter: '# Custom Settings Start'
insertbefore: '# Dimension Settings End'
with_dict: with_dict:
'ext_dimension_users_raw': '{{ ext_dimension_users_raw.splitlines() | to_json }}'
'awx_dimension_users': '{{ awx_dimension_users.splitlines() | to_json }}'


- name: Save new 'Configure Dimension' survey.json to the AWX tower, template - name: Save new 'Configure Dimension' survey.json to the AWX tower, template
delegate_to: 127.0.0.1 delegate_to: 127.0.0.1


+ 123
- 5
roles/matrix-awx/tasks/set_variables_element.yml Просмотреть файл

@@ -1,3 +1,4 @@
---


- name: Record Element-Web variables locally on AWX - name: Record Element-Web variables locally on AWX
delegate_to: 127.0.0.1 delegate_to: 127.0.0.1
@@ -8,25 +9,142 @@
insertafter: '# Element Settings Start' insertafter: '# Element Settings Start'
with_dict: with_dict:
'matrix_client_element_enabled': '{{ matrix_client_element_enabled }}' 'matrix_client_element_enabled': '{{ matrix_client_element_enabled }}'
'matrix_client_element_jitsi_preferredDomain': '{{ matrix_client_element_jitsi_preferredDomain }}'
'matrix_client_element_brand': '{{ matrix_client_element_brand }}'
'matrix_client_element_jitsi_preferredDomain': 'jitsi.{{ matrix_domain }}'
'matrix_client_element_default_theme': '{{ matrix_client_element_default_theme }}' 'matrix_client_element_default_theme': '{{ matrix_client_element_default_theme }}'
'matrix_client_element_registration_enabled': '{{ matrix_client_element_registration_enabled }}' 'matrix_client_element_registration_enabled': '{{ matrix_client_element_registration_enabled }}'
'matrix_client_element_brand': '{{ matrix_client_element_brand | trim }}'
'matrix_client_element_branding_welcomeBackgroundUrl': '{{ matrix_client_element_branding_welcomeBackgroundUrl | trim }}'
'matrix_client_element_welcome_logo': '{{ matrix_client_element_welcome_logo | trim }}'
'matrix_client_element_welcome_logo_link': '{{ matrix_client_element_welcome_logo_link | trim }}'

- name: Record Element-Web custom variables locally on AWX
delegate_to: 127.0.0.1
lineinfile:
path: '{{ awx_cached_matrix_vars }}'
regexp: "^#? *{{ item.key | regex_escape() }}:"
line: "{{ item.key }}: '{{ item.value }}'"
insertbefore: '# Element Settings End'
with_dict:
'awx_matrix_client_element_welcome_headline': '{{ awx_matrix_client_element_welcome_headline | trim }}'
'awx_matrix_client_element_welcome_text': '{{ awx_matrix_client_element_welcome_text | trim }}'

- name: Set Element-Web custom branding locally on AWX
delegate_to: 127.0.0.1
lineinfile:
path: '{{ awx_cached_matrix_vars }}'
regexp: "^#? *{{ item.key | regex_escape() }}:"
line: "{{ item.key }}: '{{ item.value }}'"
insertafter: '# Element Settings Start'
with_dict:
'matrix_client_element_brand': "{{ matrix_client_element_brand }}"
when: matrix_client_element_brand | trim | length > 0

- name: Remove Element-Web custom branding locally on AWX if not defined
delegate_to: 127.0.0.1
lineinfile:
path: '{{ awx_cached_matrix_vars }}'
regexp: "^matrix_client_element_brand: "
state: absent
when: matrix_client_element_brand | trim | length == 0


- name: Set fact for 'https' string - name: Set fact for 'https' string
set_fact: set_fact:
awx_https_string: "https" awx_https_string: "https"


- name: Record Element-Web Background variable locally on AWX
- name: Set Element-Web custom logo locally on AWX if defined
delegate_to: 127.0.0.1 delegate_to: 127.0.0.1
lineinfile: lineinfile:
path: '{{ awx_cached_matrix_vars }}' path: '{{ awx_cached_matrix_vars }}'
regexp: "^#? *{{ item.key | regex_escape() }}:" regexp: "^#? *{{ item.key | regex_escape() }}:"
line: "{{ item.key }}: {{ item.value }}"
line: "{{ item.key }}: '{{ item.value }}'"
insertafter: '# Element Settings Start'
with_dict:
'matrix_client_element_welcome_logo': '{{ matrix_client_element_welcome_logo }}'
when: ( awx_https_string in matrix_client_element_welcome_logo ) and ( matrix_client_element_welcome_logo | trim | length > 0 )

- name: Remove Element-Web custom logo locally on AWX if not defined
delegate_to: 127.0.0.1
lineinfile:
path: '{{ awx_cached_matrix_vars }}'
regexp: "^matrix_client_element_welcome_logo: "
state: absent
when: matrix_client_element_welcome_logo | trim | length == 0

- name: Set Element-Web custom logo link locally on AWX if defined
delegate_to: 127.0.0.1
lineinfile:
path: '{{ awx_cached_matrix_vars }}'
regexp: "^#? *{{ item.key | regex_escape() }}:"
line: "{{ item.key }}: '{{ item.value }}'"
insertafter: '# Element Settings Start'
with_dict:
'matrix_client_element_welcome_logo_link': '{{ matrix_client_element_welcome_logo_link }}'
when: ( awx_https_string in matrix_client_element_welcome_logo_link ) and ( matrix_client_element_welcome_logo_link | trim | length > 0 )

- name: Remove Element-Web custom logo link locally on AWX if not defined
delegate_to: 127.0.0.1
lineinfile:
path: '{{ awx_cached_matrix_vars }}'
regexp: "^matrix_client_element_welcome_logo_link: "
state: absent
when: matrix_client_element_welcome_logo_link | trim | length == 0

- name: Set Element-Web custom headline locally on AWX if defined
delegate_to: 127.0.0.1
lineinfile:
path: '{{ awx_cached_matrix_vars }}'
regexp: "^#? *{{ item.key | regex_escape() }}:"
line: "{{ item.key }}: '{{ item.value }}'"
insertafter: '# Element Settings Start'
with_dict:
'matrix_client_element_welcome_headline': '{{ awx_matrix_client_element_welcome_headline }}'
when: awx_matrix_client_element_welcome_headline | trim | length > 0

- name: Remove Element-Web custom headline locally on AWX if not defined
delegate_to: 127.0.0.1
lineinfile:
path: '{{ awx_cached_matrix_vars }}'
regexp: "^matrix_client_element_welcome_headline: "
state: absent
when: awx_matrix_client_element_welcome_headline | trim | length == 0

- name: Set Element-Web custom text locally on AWX if defined
delegate_to: 127.0.0.1
lineinfile:
path: '{{ awx_cached_matrix_vars }}'
regexp: "^#? *{{ item.key | regex_escape() }}:"
line: "{{ item.key }}: '{{ item.value }}'"
insertafter: '# Element Settings Start'
with_dict:
'matrix_client_element_welcome_text': '{{ awx_matrix_client_element_welcome_text }}'
when: awx_matrix_client_element_welcome_text | trim | length > 0

- name: Remove Element-Web custom text locally on AWX if not defined
delegate_to: 127.0.0.1
lineinfile:
path: '{{ awx_cached_matrix_vars }}'
regexp: "^matrix_client_element_welcome_text: "
state: absent
when: awx_matrix_client_element_welcome_text | trim | length == 0

- name: Set Element-Web background locally on AWX if defined
delegate_to: 127.0.0.1
lineinfile:
path: '{{ awx_cached_matrix_vars }}'
regexp: "^#? *{{ item.key | regex_escape() }}:"
line: "{{ item.key }}: '{{ item.value }}'"
insertafter: '# Element Settings Start' insertafter: '# Element Settings Start'
with_dict: with_dict:
'matrix_client_element_branding_welcomeBackgroundUrl': '{{ matrix_client_element_branding_welcomeBackgroundUrl }}' 'matrix_client_element_branding_welcomeBackgroundUrl': '{{ matrix_client_element_branding_welcomeBackgroundUrl }}'
when: (awx_https_string in matrix_client_element_branding_welcomeBackgroundUrl) and ( matrix_client_element_branding_welcomeBackgroundUrl|length > 0 )
when: matrix_client_element_branding_welcomeBackgroundUrl | trim | length > 0

- name: Remove Element-Web background locally on AWX if not defined
delegate_to: 127.0.0.1
lineinfile:
path: '{{ awx_cached_matrix_vars }}'
regexp: "^matrix_client_element_branding_welcomeBackgroundUrl: "
state: absent
when: matrix_client_element_branding_welcomeBackgroundUrl | trim | length == 0


- name: Save new 'Configure Element' survey.json to the AWX tower, template - name: Save new 'Configure Element' survey.json to the AWX tower, template
delegate_to: 127.0.0.1 delegate_to: 127.0.0.1


+ 2
- 1
roles/matrix-awx/tasks/set_variables_element_subdomain.yml Просмотреть файл

@@ -1,3 +1,4 @@
---


- name: Record Element-Web variables locally on AWX - name: Record Element-Web variables locally on AWX
delegate_to: 127.0.0.1 delegate_to: 127.0.0.1
@@ -7,7 +8,7 @@
line: "{{ item.key }}: {{ item.value }}" line: "{{ item.key }}: {{ item.value }}"
insertafter: '# Element Settings Start' insertafter: '# Element Settings Start'
with_dict: with_dict:
'matrix_server_fqn_element': "{{ element_subdomain }}.{{ matrix_domain }}"
'matrix_server_fqn_element': "{{ awx_element_subdomain | trim }}.{{ matrix_domain }}"
- name: Save new 'Configure Element Subdomain' survey.json to the AWX tower, template - name: Save new 'Configure Element Subdomain' survey.json to the AWX tower, template
delegate_to: 127.0.0.1 delegate_to: 127.0.0.1


+ 2
- 1
roles/matrix-awx/tasks/set_variables_jitsi.yml Просмотреть файл

@@ -1,3 +1,4 @@
---


- name: Record Jitsi variables locally on AWX - name: Record Jitsi variables locally on AWX
delegate_to: 127.0.0.1 delegate_to: 127.0.0.1
@@ -8,7 +9,7 @@
insertafter: '# Jitsi Settings Start' insertafter: '# Jitsi Settings Start'
with_dict: with_dict:
'matrix_jitsi_enabled': '{{ matrix_jitsi_enabled }}' 'matrix_jitsi_enabled': '{{ matrix_jitsi_enabled }}'
'matrix_jitsi_web_config_defaultLanguage': '{{ matrix_jitsi_web_config_defaultLanguage }}'
'matrix_jitsi_web_config_defaultLanguage': '{{ matrix_jitsi_web_config_defaultLanguage | trim }}'


- name: Save new 'Configure Jitsi' survey.json to the AWX tower, template - name: Save new 'Configure Jitsi' survey.json to the AWX tower, template
delegate_to: 127.0.0.1 delegate_to: 127.0.0.1


+ 10
- 9
roles/matrix-awx/tasks/set_variables_ma1sd.yml Просмотреть файл

@@ -1,3 +1,4 @@
---


- name: Record ma1sd variables locally on AWX - name: Record ma1sd variables locally on AWX
delegate_to: 127.0.0.1 delegate_to: 127.0.0.1
@@ -17,8 +18,8 @@
line: "{{ item.key }}: {{ item.value }}" line: "{{ item.key }}: {{ item.value }}"
insertafter: '# Synapse Extension Start' insertafter: '# Synapse Extension Start'
with_dict: with_dict:
'matrix_synapse_ext_password_provider_rest_auth_enabled': 'false'
when: ext_matrix_ma1sd_auth_store == 'Synapse Internal'
'matrix_synapse_awx_password_provider_rest_auth_enabled': 'false'
when: awx_matrix_ma1sd_auth_store == 'Synapse Internal'


- name: Enable REST auth if using external LDAP/AD with ma1sd - name: Enable REST auth if using external LDAP/AD with ma1sd
delegate_to: 127.0.0.1 delegate_to: 127.0.0.1
@@ -28,9 +29,9 @@
line: "{{ item.key }}: {{ item.value }}" line: "{{ item.key }}: {{ item.value }}"
insertafter: '# Synapse Extension Start' insertafter: '# Synapse Extension Start'
with_dict: with_dict:
'matrix_synapse_ext_password_provider_rest_auth_enabled': 'true'
'matrix_synapse_ext_password_provider_rest_auth_endpoint': '"http://matrix-ma1sd:8090"'
when: ext_matrix_ma1sd_auth_store == 'LDAP/AD'
'matrix_synapse_awx_password_provider_rest_auth_enabled': 'true'
'matrix_synapse_awx_password_provider_rest_auth_endpoint': '"http://matrix-ma1sd:8090"'
when: awx_matrix_ma1sd_auth_store == 'LDAP/AD'


- name: Remove entire ma1sd configuration extension - name: Remove entire ma1sd configuration extension
delegate_to: 127.0.0.1 delegate_to: 127.0.0.1
@@ -53,7 +54,7 @@
path: '{{ awx_cached_matrix_vars }}' path: '{{ awx_cached_matrix_vars }}'
marker: "# {mark} ma1sd ANSIBLE MANAGED BLOCK" marker: "# {mark} ma1sd ANSIBLE MANAGED BLOCK"
insertafter: '# Start ma1sd Extension' insertafter: '# Start ma1sd Extension'
block: '{{ ext_matrix_ma1sd_configuration_extension_yaml }}'
block: '{{ awx_matrix_ma1sd_configuration_extension_yaml }}'


- name: Record ma1sd Custom variables locally on AWX - name: Record ma1sd Custom variables locally on AWX
delegate_to: 127.0.0.1 delegate_to: 127.0.0.1
@@ -61,10 +62,10 @@
path: '{{ awx_cached_matrix_vars }}' path: '{{ awx_cached_matrix_vars }}'
regexp: "^#? *{{ item.key | regex_escape() }}:" regexp: "^#? *{{ item.key | regex_escape() }}:"
line: "{{ item.key }}: {{ item.value }}" line: "{{ item.key }}: {{ item.value }}"
insertbefore: '# Custom Settings Start'
insertbefore: '# ma1sd Settings End'
with_dict: with_dict:
'ext_matrix_ma1sd_auth_store': '{{ ext_matrix_ma1sd_auth_store }}'
'ext_matrix_ma1sd_configuration_extension_yaml': '{{ ext_matrix_ma1sd_configuration_extension_yaml.splitlines() | to_json }}'
'awx_matrix_ma1sd_auth_store': '{{ awx_matrix_ma1sd_auth_store }}'
'awx_matrix_ma1sd_configuration_extension_yaml': '{{ awx_matrix_ma1sd_configuration_extension_yaml.splitlines() | to_json }}'
no_log: True no_log: True


- name: Save new 'Configure ma1sd' survey.json to the AWX tower, template - name: Save new 'Configure ma1sd' survey.json to the AWX tower, template


+ 1
- 0
roles/matrix-awx/tasks/set_variables_mailer.yml Просмотреть файл

@@ -1,3 +1,4 @@
---


- name: Record Mailer variables locally on AWX - name: Record Mailer variables locally on AWX
delegate_to: 127.0.0.1 delegate_to: 127.0.0.1


+ 39
- 39
roles/matrix-awx/tasks/set_variables_synapse.yml Просмотреть файл

@@ -2,12 +2,12 @@
- name: Limit max upload size to 200MB part 1 - name: Limit max upload size to 200MB part 1
set_fact: set_fact:
matrix_synapse_max_upload_size_mb: "200" matrix_synapse_max_upload_size_mb: "200"
when: matrix_synapse_max_upload_size_mb_raw|int >= 200
when: awx_synapse_max_upload_size_mb | int >= 200


- name: Limit max upload size to 200MB part 2 - name: Limit max upload size to 200MB part 2
set_fact: set_fact:
matrix_synapse_max_upload_size_mb: "{{ matrix_synapse_max_upload_size_mb_raw }}"
when: matrix_synapse_max_upload_size_mb_raw|int < 200
matrix_synapse_max_upload_size_mb: "{{ awx_synapse_max_upload_size_mb }}"
when: awx_synapse_max_upload_size_mb | int < 200


- name: Record Synapse variables locally on AWX - name: Record Synapse variables locally on AWX
delegate_to: 127.0.0.1 delegate_to: 127.0.0.1
@@ -32,13 +32,13 @@
path: '{{ awx_cached_matrix_vars }}' path: '{{ awx_cached_matrix_vars }}'
regexp: "^matrix_synapse_auto_join_rooms: .*$" regexp: "^matrix_synapse_auto_join_rooms: .*$"
replace: "matrix_synapse_auto_join_rooms: []" replace: "matrix_synapse_auto_join_rooms: []"
when: matrix_synapse_auto_join_rooms_raw|length == 0
when: awx_synapse_auto_join_rooms | length == 0


- name: If the raw inputs is not empty start constructing parsed auto_join_rooms list - name: If the raw inputs is not empty start constructing parsed auto_join_rooms list
set_fact: set_fact:
matrix_synapse_auto_join_rooms_array: |-
{{ matrix_synapse_auto_join_rooms_raw.splitlines() | to_json }}
when: matrix_synapse_auto_join_rooms_raw|length > 0
awx_synapse_auto_join_rooms_array: |-
{{ awx_synapse_auto_join_rooms.splitlines() | to_json }}
when: awx_synapse_auto_join_rooms|length > 0


- name: Record Synapse variable 'matrix_synapse_auto_join_rooms' locally on AWX, if it's not blank - name: Record Synapse variable 'matrix_synapse_auto_join_rooms' locally on AWX, if it's not blank
delegate_to: 127.0.0.1 delegate_to: 127.0.0.1
@@ -48,8 +48,8 @@
line: "{{ item.key }}: {{ item.value }}" line: "{{ item.key }}: {{ item.value }}"
insertafter: '# Synapse Settings Start' insertafter: '# Synapse Settings Start'
with_dict: with_dict:
"matrix_synapse_auto_join_rooms": "{{ matrix_synapse_auto_join_rooms_array }}"
when: matrix_synapse_auto_join_rooms_raw|length > 0
"matrix_synapse_auto_join_rooms": "{{ awx_synapse_auto_join_rooms_array }}"
when: awx_synapse_auto_join_rooms|length > 0


- name: Record Synapse Shared Secret if it's defined - name: Record Synapse Shared Secret if it's defined
delegate_to: 127.0.0.1 delegate_to: 127.0.0.1
@@ -59,8 +59,8 @@
line: "{{ item.key }}: {{ item.value }}" line: "{{ item.key }}: {{ item.value }}"
insertafter: '# Synapse Settings Start' insertafter: '# Synapse Settings Start'
with_dict: with_dict:
'matrix_synapse_registration_shared_secret': '{{ ext_matrix_synapse_registration_shared_secret }}'
when: ext_matrix_synapse_registration_shared_secret|length > 0
'matrix_synapse_registration_shared_secret': '{{ awx_matrix_synapse_registration_shared_secret }}'
when: awx_matrix_synapse_registration_shared_secret | length > 0


- name: Record registations_require_3pid extra variable if true - name: Record registations_require_3pid extra variable if true
delegate_to: 127.0.0.1 delegate_to: 127.0.0.1
@@ -72,7 +72,7 @@
with_items: with_items:
- " registrations_require_3pid:" - " registrations_require_3pid:"
- " - email" - " - email"
when: ext_registrations_require_3pid|bool
when: awx_registrations_require_3pid | bool


- name: Remove registrations_require_3pid extra variable if false - name: Remove registrations_require_3pid extra variable if false
delegate_to: 127.0.0.1 delegate_to: 127.0.0.1
@@ -85,7 +85,7 @@
with_items: with_items:
- " registrations_require_3pid:" - " registrations_require_3pid:"
- " - email" - " - email"
when: not ext_registrations_require_3pid|bool
when: not awx_registrations_require_3pid | bool


- name: Remove URL Languages - name: Remove URL Languages
delegate_to: 127.0.0.1 delegate_to: 127.0.0.1
@@ -97,21 +97,21 @@


- name: Set URL languages default if raw inputs empty - name: Set URL languages default if raw inputs empty
set_fact: set_fact:
ext_url_preview_accept_language_default: 'en'
when: ext_url_preview_accept_language_raw|length == 0
awx_url_preview_accept_language_default: 'en'
when: awx_url_preview_accept_language | length == 0


- name: Set URL languages default if raw inputs not empty - name: Set URL languages default if raw inputs not empty
set_fact: set_fact:
ext_url_preview_accept_language_default: "{{ ext_url_preview_accept_language_raw }}"
when: ext_url_preview_accept_language_raw|length > 0
awx_url_preview_accept_language_default: "{{ awx_url_preview_accept_language }}"
when: awx_url_preview_accept_language|length > 0


- name: Set URL languages if raw inputs empty - name: Set URL languages if raw inputs empty
delegate_to: 127.0.0.1 delegate_to: 127.0.0.1
lineinfile: lineinfile:
path: '{{ awx_cached_matrix_vars }}' path: '{{ awx_cached_matrix_vars }}'
insertafter: '^ url_preview_accept_language:' insertafter: '^ url_preview_accept_language:'
line: " - {{ ext_url_preview_accept_language_default }}"
when: ext_url_preview_accept_language_raw|length == 0
line: " - {{ awx_url_preview_accept_language_default }}"
when: awx_url_preview_accept_language|length == 0


- name: Set URL languages if raw inputs not empty - name: Set URL languages if raw inputs not empty
delegate_to: 127.0.0.1 delegate_to: 127.0.0.1
@@ -119,8 +119,8 @@
path: '{{ awx_cached_matrix_vars }}' path: '{{ awx_cached_matrix_vars }}'
insertafter: '^ url_preview_accept_language:' insertafter: '^ url_preview_accept_language:'
line: " - {{ item }}" line: " - {{ item }}"
with_items: "{{ ext_url_preview_accept_language_raw.splitlines() }}"
when: ext_url_preview_accept_language_raw|length > 0
with_items: "{{ awx_url_preview_accept_language.splitlines() }}"
when: awx_url_preview_accept_language | length > 0


- name: Remove Federation Whitelisting 1 - name: Remove Federation Whitelisting 1
delegate_to: 127.0.0.1 delegate_to: 127.0.0.1
@@ -143,7 +143,7 @@
path: '{{ awx_cached_matrix_vars }}' path: '{{ awx_cached_matrix_vars }}'
insertafter: '^matrix_synapse_configuration_extension_yaml: \|' insertafter: '^matrix_synapse_configuration_extension_yaml: \|'
line: " federation_domain_whitelist:" line: " federation_domain_whitelist:"
when: ext_federation_whitelist_raw|length > 0
when: awx_federation_whitelist | length > 0


- name: Set Federation Whitelisting 2 - name: Set Federation Whitelisting 2
delegate_to: 127.0.0.1 delegate_to: 127.0.0.1
@@ -151,16 +151,16 @@
path: '{{ awx_cached_matrix_vars }}' path: '{{ awx_cached_matrix_vars }}'
insertafter: '^ federation_domain_whitelist:' insertafter: '^ federation_domain_whitelist:'
line: " - {{ item }}" line: " - {{ item }}"
with_items: "{{ ext_federation_whitelist_raw.splitlines() }}"
when: ext_federation_whitelist_raw|length > 0
with_items: "{{ awx_federation_whitelist.splitlines() }}"
when: awx_federation_whitelist | length > 0


- name: Set ext_recaptcha_public_key to a 'public-key' if undefined
set_fact: ext_recaptcha_public_key="public-key"
when: (ext_recaptcha_public_key is not defined) or (ext_recaptcha_public_key|length == 0)
- name: Set awx_recaptcha_public_key to a 'public-key' if undefined
set_fact: awx_recaptcha_public_key="public-key"
when: (awx_recaptcha_public_key is not defined) or (awx_recaptcha_public_key|length == 0)


- name: Set ext_recaptcha_private_key to a 'private-key' if undefined
set_fact: ext_recaptcha_private_key="private-key"
when: (ext_recaptcha_private_key is not defined) or (ext_recaptcha_private_key|length == 0)
- name: Set awx_recaptcha_private_key to a 'private-key' if undefined
set_fact: awx_recaptcha_private_key="private-key"
when: (awx_recaptcha_private_key is not defined) or (awx_recaptcha_private_key|length == 0)


- name: Record Synapse Extension variables locally on AWX - name: Record Synapse Extension variables locally on AWX
delegate_to: 127.0.0.1 delegate_to: 127.0.0.1
@@ -170,9 +170,9 @@
line: "{{ item.key }}: {{ item.value }}" line: "{{ item.key }}: {{ item.value }}"
insertbefore: '# Synapse Extension End' insertbefore: '# Synapse Extension End'
with_dict: with_dict:
' enable_registration_captcha': '{{ ext_enable_registration_captcha }}'
' recaptcha_public_key': '{{ ext_recaptcha_public_key }}'
' recaptcha_private_key': '{{ ext_recaptcha_private_key }}'
' enable_registration_captcha': '{{ awx_enable_registration_captcha }}'
' recaptcha_public_key': '{{ awx_recaptcha_public_key }}'
' recaptcha_private_key': '{{ awx_recaptcha_private_key }}'


- name: Record Synapse Custom variables locally on AWX - name: Record Synapse Custom variables locally on AWX
delegate_to: 127.0.0.1 delegate_to: 127.0.0.1
@@ -180,13 +180,13 @@
path: '{{ awx_cached_matrix_vars }}' path: '{{ awx_cached_matrix_vars }}'
regexp: "^#? *{{ item.key | regex_escape() }}:" regexp: "^#? *{{ item.key | regex_escape() }}:"
line: "{{ item.key }}: {{ item.value }}" line: "{{ item.key }}: {{ item.value }}"
insertafter: '# Custom Settings Start'
insertbefore: '# Synapse Settings End'
with_dict: with_dict:
'ext_federation_whitelist_raw': '{{ ext_federation_whitelist_raw.splitlines() | to_json }}'
'ext_url_preview_accept_language_default': '{{ ext_url_preview_accept_language_default.splitlines() | to_json }}'
'ext_enable_registration_captcha': '{{ ext_enable_registration_captcha }}'
'ext_recaptcha_public_key': '"{{ ext_recaptcha_public_key }}"'
'ext_recaptcha_private_key': '"{{ ext_recaptcha_private_key }}"'
'awx_federation_whitelist': '{{ awx_federation_whitelist.splitlines() | to_json }}'
'awx_url_preview_accept_language_default': '{{ awx_url_preview_accept_language_default.splitlines() | to_json }}'
'awx_enable_registration_captcha': '{{ awx_enable_registration_captcha }}'
'awx_recaptcha_public_key': '"{{ awx_recaptcha_public_key }}"'
'awx_recaptcha_private_key': '"{{ awx_recaptcha_private_key }}"'


- name: Save new 'Configure Synapse' survey.json to the AWX tower, template - name: Save new 'Configure Synapse' survey.json to the AWX tower, template
delegate_to: 127.0.0.1 delegate_to: 127.0.0.1


+ 1
- 0
roles/matrix-awx/tasks/set_variables_synapse_admin.yml Просмотреть файл

@@ -1,3 +1,4 @@
---


- name: Record Synapse Admin variables locally on AWX - name: Record Synapse Admin variables locally on AWX
delegate_to: 127.0.0.1 delegate_to: 127.0.0.1


+ 1
- 1
roles/matrix-bridge-appservice-slack/defaults/main.yml Просмотреть файл

@@ -7,7 +7,7 @@ matrix_appservice_slack_container_self_build: false
matrix_appservice_slack_docker_repo: "https://github.com/matrix-org/matrix-appservice-slack.git" matrix_appservice_slack_docker_repo: "https://github.com/matrix-org/matrix-appservice-slack.git"
matrix_appservice_slack_docker_src_files_path: "{{ matrix_base_data_path }}/appservice-slack/docker-src" matrix_appservice_slack_docker_src_files_path: "{{ matrix_base_data_path }}/appservice-slack/docker-src"


matrix_appservice_slack_version: release-1.5.0
matrix_appservice_slack_version: release-1.8.0
matrix_appservice_slack_docker_image: "{{ matrix_container_global_registry_prefix }}matrixdotorg/matrix-appservice-slack:{{ matrix_appservice_slack_version }}" matrix_appservice_slack_docker_image: "{{ matrix_container_global_registry_prefix }}matrixdotorg/matrix-appservice-slack:{{ matrix_appservice_slack_version }}"
matrix_appservice_slack_docker_image_force_pull: "{{ matrix_appservice_slack_docker_image.endswith(':latest') }}" matrix_appservice_slack_docker_image_force_pull: "{{ matrix_appservice_slack_docker_image.endswith(':latest') }}"




+ 7
- 1
roles/matrix-bridge-mautrix-whatsapp/defaults/main.yml Просмотреть файл

@@ -3,14 +3,20 @@


matrix_mautrix_whatsapp_enabled: true matrix_mautrix_whatsapp_enabled: true


matrix_mautrix_whatsapp_container_image_self_build: false
matrix_mautrix_whatsapp_container_image_self_build_repo: "https://mau.dev/mautrix/whatsapp.git"
matrix_mautrix_whatsapp_container_image_self_build_branch: "{{ 'master' if matrix_mautrix_whatsapp_version == 'latest' else matrix_mautrix_whatsapp_version }}"

matrix_mautrix_whatsapp_version: latest matrix_mautrix_whatsapp_version: latest
# See: https://mau.dev/mautrix/whatsapp/container_registry # See: https://mau.dev/mautrix/whatsapp/container_registry
matrix_mautrix_whatsapp_docker_image: "dock.mau.dev/mautrix/whatsapp:{{ matrix_mautrix_whatsapp_version }}"
matrix_mautrix_whatsapp_docker_image: "{{ matrix_mautrix_whatsapp_docker_image_name_prefix }}mautrix/whatsapp:{{ matrix_mautrix_whatsapp_version }}"
matrix_mautrix_whatsapp_docker_image_name_prefix: "{{ 'localhost/' if matrix_mautrix_whatsapp_container_image_self_build else 'dock.mau.dev/' }}"
matrix_mautrix_whatsapp_docker_image_force_pull: "{{ matrix_mautrix_whatsapp_docker_image.endswith(':latest') }}" matrix_mautrix_whatsapp_docker_image_force_pull: "{{ matrix_mautrix_whatsapp_docker_image.endswith(':latest') }}"


matrix_mautrix_whatsapp_base_path: "{{ matrix_base_data_path }}/mautrix-whatsapp" matrix_mautrix_whatsapp_base_path: "{{ matrix_base_data_path }}/mautrix-whatsapp"
matrix_mautrix_whatsapp_config_path: "{{ matrix_mautrix_whatsapp_base_path }}/config" matrix_mautrix_whatsapp_config_path: "{{ matrix_mautrix_whatsapp_base_path }}/config"
matrix_mautrix_whatsapp_data_path: "{{ matrix_mautrix_whatsapp_base_path }}/data" matrix_mautrix_whatsapp_data_path: "{{ matrix_mautrix_whatsapp_base_path }}/data"
matrix_mautrix_whatsapp_docker_src_files_path: "{{ matrix_mautrix_whatsapp_base_path }}/docker-src"


matrix_mautrix_whatsapp_homeserver_address: "{{ matrix_homeserver_container_url }}" matrix_mautrix_whatsapp_homeserver_address: "{{ matrix_homeserver_container_url }}"
matrix_mautrix_whatsapp_homeserver_domain: "{{ matrix_domain }}" matrix_mautrix_whatsapp_homeserver_domain: "{{ matrix_domain }}"


+ 35
- 10
roles/matrix-bridge-mautrix-whatsapp/tasks/setup_install.yml Просмотреть файл

@@ -35,24 +35,49 @@
when: "matrix_mautrix_whatsapp_sqlite_database_path_local_stat_result.stat.exists|bool" when: "matrix_mautrix_whatsapp_sqlite_database_path_local_stat_result.stat.exists|bool"
when: "matrix_mautrix_whatsapp_database_engine == 'postgres'" when: "matrix_mautrix_whatsapp_database_engine == 'postgres'"


- name: Ensure Mautrix Whatsapp image is pulled
docker_image:
name: "{{ matrix_mautrix_whatsapp_docker_image }}"
source: "{{ 'pull' if ansible_version.major > 2 or ansible_version.minor > 7 else omit }}"
force_source: "{{ matrix_mautrix_whatsapp_docker_image_force_pull if ansible_version.major > 2 or ansible_version.minor >= 8 else omit }}"
force: "{{ omit if ansible_version.major > 2 or ansible_version.minor >= 8 else matrix_mautrix_whatsapp_docker_image_force_pull }}"


- name: Ensure Mautrix Whatsapp paths exists - name: Ensure Mautrix Whatsapp paths exists
file: file:
path: "{{ item }}"
path: "{{ item.path }}"
state: directory state: directory
mode: 0750 mode: 0750
owner: "{{ matrix_user_username }}" owner: "{{ matrix_user_username }}"
group: "{{ matrix_user_groupname }}" group: "{{ matrix_user_groupname }}"
with_items: with_items:
- "{{ matrix_mautrix_whatsapp_base_path }}"
- "{{ matrix_mautrix_whatsapp_config_path }}"
- "{{ matrix_mautrix_whatsapp_data_path }}"
- { path: "{{ matrix_mautrix_whatsapp_base_path }}", when: true }
- { path: "{{ matrix_mautrix_whatsapp_config_path }}", when: true }
- { path: "{{ matrix_mautrix_whatsapp_data_path }}", when: true }
- { path: "{{ matrix_mautrix_whatsapp_docker_src_files_path }}", when: "{{ matrix_mautrix_whatsapp_container_image_self_build }}" }
when: item.when|bool

- name: Ensure Mautrix Whatsapp image is pulled
docker_image:
name: "{{ matrix_mautrix_whatsapp_docker_image }}"
source: "{{ 'pull' if ansible_version.major > 2 or ansible_version.minor > 7 else omit }}"
force_source: "{{ matrix_mautrix_whatsapp_docker_image_force_pull if ansible_version.major > 2 or ansible_version.minor >= 8 else omit }}"
force: "{{ omit if ansible_version.major > 2 or ansible_version.minor >= 8 else matrix_mautrix_whatsapp_docker_image_force_pull }}"
when: not matrix_mautrix_whatsapp_container_image_self_build

- name: Ensure Mautrix Whatsapp repository is present on self-build
git:
repo: "{{ matrix_mautrix_whatsapp_container_image_self_build_repo }}"
dest: "{{ matrix_mautrix_whatsapp_docker_src_files_path }}"
version: "{{ matrix_mautrix_whatsapp_container_image_self_build_branch }}"
force: "yes"
register: matrix_mautrix_whatsapp_git_pull_results
when: "matrix_mautrix_whatsapp_container_image_self_build|bool"

- name: Ensure Mautrix Whatsapp Docker image is built
docker_image:
name: "{{ matrix_mautrix_whatsapp_docker_image }}"
source: build
force_source: "{{ matrix_mautrix_whatsapp_git_pull_results.changed if ansible_version.major > 2 or ansible_version.minor >= 8 else omit }}"
force: "{{ omit if ansible_version.major > 2 or ansible_version.minor >= 8 else matrix_mautrix_whatsapp_git_pull_results.changed }}"
build:
dockerfile: Dockerfile
path: "{{ matrix_mautrix_whatsapp_docker_src_files_path }}"
pull: yes
when: "matrix_mautrix_whatsapp_container_image_self_build|bool"


- name: Check if an old database file exists - name: Check if an old database file exists
stat: stat:


+ 13
- 13
roles/matrix-common-after/tasks/awx_post.yml Просмотреть файл

@@ -2,9 +2,9 @@


- name: Create user account @janitor - name: Create user account @janitor
command: | command: |
/usr/local/bin/matrix-synapse-register-user janitor {{ matrix_awx_janitor_user_password | quote }} 1
/usr/local/bin/matrix-synapse-register-user janitor {{ awx_janitor_user_password | quote }} 1
register: cmd register: cmd
when: not matrix_awx_janitor_user_created|bool
when: not awx_janitor_user_created|bool
no_log: True no_log: True
- name: Update AWX janitor user created variable - name: Update AWX janitor user created variable
@@ -15,14 +15,14 @@
line: "{{ item.key }}: {{ item.value }}" line: "{{ item.key }}: {{ item.value }}"
insertafter: 'AWX Settings' insertafter: 'AWX Settings'
with_dict: with_dict:
'matrix_awx_janitor_user_created': 'true'
when: not matrix_awx_janitor_user_created|bool
'awx_janitor_user_created': 'true'
when: not awx_janitor_user_created|bool


- name: Create user account @dimension - name: Create user account @dimension
command: | command: |
/usr/local/bin/matrix-synapse-register-user dimension {{ matrix_awx_dimension_user_password | quote }} 0
/usr/local/bin/matrix-synapse-register-user dimension {{ awx_dimension_user_password | quote }} 0
register: cmd register: cmd
when: not matrix_awx_dimension_user_created|bool
when: not awx_dimension_user_created|bool
no_log: True no_log: True
- name: Update AWX dimension user created variable - name: Update AWX dimension user created variable
@@ -33,14 +33,14 @@
line: "{{ item.key }}: {{ item.value }}" line: "{{ item.key }}: {{ item.value }}"
insertafter: 'AWX Settings' insertafter: 'AWX Settings'
with_dict: with_dict:
'matrix_awx_dimension_user_created': 'true'
when: not matrix_awx_dimension_user_created|bool
'awx_dimension_user_created': 'true'
when: not awx_dimension_user_created|bool


- name: Create user account @mjolnir - name: Create user account @mjolnir
command: | command: |
/usr/local/bin/matrix-synapse-register-user mjolnir {{ matrix_awx_mjolnir_user_password | quote }} 0
/usr/local/bin/matrix-synapse-register-user mjolnir {{ awx_mjolnir_user_password | quote }} 0
register: cmd register: cmd
when: not matrix_awx_mjolnir_user_created|bool
when: not awx_mjolnir_user_created|bool
no_log: True no_log: True
- name: Update AWX dimension user created variable - name: Update AWX dimension user created variable
@@ -51,8 +51,8 @@
line: "{{ item.key }}: {{ item.value }}" line: "{{ item.key }}: {{ item.value }}"
insertafter: 'AWX Settings' insertafter: 'AWX Settings'
with_dict: with_dict:
'matrix_awx_mjolnir_user_created': 'true'
when: not matrix_awx_mjolnir_user_created|bool
'awx_mjolnir_user_created': 'true'
when: not awx_mjolnir_user_created|bool


- name: Ensure /chroot/website location has correct permissions - name: Ensure /chroot/website location has correct permissions
file: file:
@@ -61,4 +61,4 @@
owner: matrix owner: matrix
group: matrix group: matrix
mode: '0770' mode: '0770'
when: customise_base_domain_website is defined
when: awx_customise_base_domain_website is defined

Загрузка…
Отмена
Сохранить