Matrix Docker Ansible eploy
Nie możesz wybrać więcej, niż 25 tematów Tematy muszą się zaczynać od litery lub cyfry, mogą zawierać myślniki ('-') i mogą mieć do 35 znaków.
 
 

76 wiersze
3.1 KiB

  1. ---
  2. - set_fact:
  3. matrix_dimension_requires_restart: false
  4. - block:
  5. - name: Check if an SQLite database already exists
  6. stat:
  7. path: "{{ matrix_dimension_sqlite_database_path_local }}"
  8. register: matrix_dimension_sqlite_database_path_local_stat_result
  9. - block:
  10. - set_fact:
  11. matrix_postgres_db_migration_request:
  12. src: "{{ matrix_dimension_sqlite_database_path_local }}"
  13. dst: "{{ matrix_dimension_database_connection_string }}"
  14. caller: "{{ role_path|basename }}"
  15. engine_variable_name: 'matrix_dimension_database_engine'
  16. engine_old: 'sqlite'
  17. systemd_services_to_stop: ['matrix-dimension.service']
  18. pgloader_options: ['--with "quote identifiers"']
  19. # pgloader makes `isSelfBot` of type `smallint`, instead of `boolean`.
  20. # We need to fix it up
  21. additional_psql_statements_list:
  22. - 'ALTER TABLE dimension_users ALTER COLUMN "isSelfBot" DROP default;'
  23. - 'ALTER TABLE dimension_users ALTER COLUMN "isSelfBot" TYPE BOOLEAN USING("isSelfBot"::text::boolean);'
  24. - 'ALTER TABLE dimension_users ALTER COLUMN "isSelfBot" SET default false;'
  25. - import_tasks: "roles/matrix-postgres/tasks/util/migrate_db_to_postgres.yml"
  26. - set_fact:
  27. matrix_dimension_requires_restart: true
  28. when: "matrix_dimension_sqlite_database_path_local_stat_result.stat.exists|bool"
  29. when: "matrix_dimension_database_engine == 'postgres'"
  30. - name: Ensure Dimension base path exists
  31. file:
  32. path: "{{ matrix_dimension_base_path }}"
  33. state: directory
  34. mode: 0770
  35. owner: "{{ matrix_user_username }}"
  36. group: "{{ matrix_dimension_user_gid }}"
  37. - name: Ensure Dimension config installed
  38. copy:
  39. content: "{{ matrix_dimension_configuration|to_nice_yaml }}"
  40. dest: "{{ matrix_dimension_base_path }}/config.yaml"
  41. mode: 0640
  42. owner: "{{ matrix_user_username }}"
  43. group: "{{ matrix_dimension_user_gid }}"
  44. - name: Ensure Dimension image is pulled
  45. docker_image:
  46. name: "{{ matrix_dimension_docker_image }}"
  47. source: "{{ 'pull' if ansible_version.major > 2 or ansible_version.minor > 7 else omit }}"
  48. force_source: "{{ matrix_dimension_docker_image_force_pull if ansible_version.major > 2 or ansible_version.minor >= 8 else omit }}"
  49. force: "{{ omit if ansible_version.major > 2 or ansible_version.minor >= 8 else matrix_dimension_docker_image_force_pull }}"
  50. - name: Ensure matrix-dimension.service installed
  51. template:
  52. src: "{{ role_path }}/templates/systemd/matrix-dimension.service.j2"
  53. dest: "{{ matrix_systemd_path }}/matrix-dimension.service"
  54. mode: 0644
  55. register: matrix_dimension_systemd_service_result
  56. - name: Ensure systemd reloaded after matrix-dimension.service installation
  57. service:
  58. daemon_reload: yes
  59. when: "matrix_dimension_systemd_service_result.changed|bool"
  60. - name: Ensure matrix-dimension.service restarted, if necessary
  61. service:
  62. name: "matrix-dimension.service"
  63. state: restarted
  64. when: "matrix_dimension_requires_restart|bool"