Matrix Docker Ansible eploy
您最多选择25个主题 主题必须以字母或数字开头,可以包含连字符 (-),并且长度不得超过35个字符
 
 

160 行
6.9 KiB

  1. # SPDX-FileCopyrightText: 2019 - 2024 Slavi Pantaleev
  2. # SPDX-FileCopyrightText: 2019 Dan Arnfield
  3. # SPDX-FileCopyrightText: 2020 Chris van Dijk
  4. # SPDX-FileCopyrightText: 2020 Horvath Gergely
  5. # SPDX-FileCopyrightText: 2020 MDAD project contributors
  6. # SPDX-FileCopyrightText: 2020 Stuart Mumford
  7. # SPDX-FileCopyrightText: 2021 Aaron Raimist
  8. # SPDX-FileCopyrightText: 2022 Jim Myhrberg
  9. # SPDX-FileCopyrightText: 2022 Marko Weltzer
  10. # SPDX-FileCopyrightText: 2022 Nikita Chernyi
  11. # SPDX-FileCopyrightText: 2022 Sebastian Gumprich
  12. # SPDX-FileCopyrightText: 2024 David Mehren
  13. #
  14. # SPDX-License-Identifier: AGPL-3.0-or-later
  15. ---
  16. - ansible.builtin.set_fact:
  17. matrix_mautrix_facebook_requires_restart: false
  18. - when: "matrix_mautrix_facebook_database_engine == 'postgres'"
  19. block:
  20. - name: Check if an SQLite database already exists
  21. ansible.builtin.stat:
  22. path: "{{ matrix_mautrix_facebook_sqlite_database_path_local }}"
  23. register: matrix_mautrix_facebook_sqlite_database_path_local_stat_result
  24. - when: "matrix_mautrix_facebook_sqlite_database_path_local_stat_result.stat.exists | bool"
  25. block:
  26. - ansible.builtin.include_role:
  27. name: galaxy/postgres
  28. tasks_from: migrate_db_to_postgres
  29. vars:
  30. postgres_db_migration_request:
  31. src: "{{ matrix_mautrix_facebook_sqlite_database_path_local }}"
  32. dst: "{{ matrix_mautrix_facebook_database_connection_string }}"
  33. caller: "{{ role_path | basename }}"
  34. engine_variable_name: 'matrix_mautrix_facebook_database_engine'
  35. engine_old: 'sqlite'
  36. systemd_services_to_stop: ['matrix-mautrix-facebook.service']
  37. - ansible.builtin.set_fact:
  38. matrix_mautrix_facebook_requires_restart: true
  39. - name: Ensure Mautrix Facebook image is pulled
  40. community.docker.docker_image:
  41. name: "{{ matrix_mautrix_facebook_docker_image }}"
  42. source: "{{ 'pull' if ansible_version.major > 2 or ansible_version.minor > 7 else omit }}"
  43. force_source: "{{ matrix_mautrix_facebook_docker_image_force_pull if ansible_version.major > 2 or ansible_version.minor >= 8 else omit }}"
  44. force: "{{ omit if ansible_version.major > 2 or ansible_version.minor >= 8 else matrix_mautrix_facebook_docker_image_force_pull }}"
  45. when: not matrix_mautrix_facebook_container_image_self_build
  46. register: result
  47. retries: "{{ devture_playbook_help_container_retries_count }}"
  48. delay: "{{ devture_playbook_help_container_retries_delay }}"
  49. until: result is not failed
  50. - name: Ensure Mautrix Facebook paths exist
  51. ansible.builtin.file:
  52. path: "{{ item.path }}"
  53. state: directory
  54. mode: 0750
  55. owner: "{{ matrix_user_name }}"
  56. group: "{{ matrix_group_name }}"
  57. with_items:
  58. - {path: "{{ matrix_mautrix_facebook_base_path }}", when: true}
  59. - {path: "{{ matrix_mautrix_facebook_config_path }}", when: true}
  60. - {path: "{{ matrix_mautrix_facebook_data_path }}", when: true}
  61. - {path: "{{ matrix_mautrix_facebook_docker_src_files_path }}", when: "{{ matrix_mautrix_facebook_container_image_self_build }}"}
  62. when: item.when | bool
  63. - name: Ensure Mautrix Facebook repository is present on self-build
  64. ansible.builtin.git:
  65. repo: "{{ matrix_mautrix_facebook_container_image_self_build_repo }}"
  66. dest: "{{ matrix_mautrix_facebook_docker_src_files_path }}"
  67. version: "{{ matrix_mautrix_facebook_docker_image.split(':')[1] }}"
  68. force: "yes"
  69. become: true
  70. become_user: "{{ matrix_user_name }}"
  71. register: matrix_mautrix_facebook_git_pull_results
  72. when: "matrix_mautrix_facebook_container_image_self_build | bool"
  73. - name: Ensure Mautrix Facebook Docker image is built
  74. community.docker.docker_image:
  75. name: "{{ matrix_mautrix_facebook_docker_image }}"
  76. source: build
  77. force_source: "{{ matrix_mautrix_facebook_git_pull_results.changed if ansible_version.major > 2 or ansible_version.minor >= 8 else omit }}"
  78. force: "{{ omit if ansible_version.major > 2 or ansible_version.minor >= 8 else matrix_mautrix_facebook_git_pull_results.changed }}"
  79. build:
  80. dockerfile: Dockerfile
  81. path: "{{ matrix_mautrix_facebook_docker_src_files_path }}"
  82. pull: true
  83. when: "matrix_mautrix_facebook_container_image_self_build | bool"
  84. - name: Check if an old database file already exists
  85. ansible.builtin.stat:
  86. path: "{{ matrix_mautrix_facebook_base_path }}/mautrix-facebook.db"
  87. register: matrix_mautrix_facebook_stat_database
  88. - name: (Data relocation) Ensure matrix-mautrix-facebook.service is stopped
  89. ansible.builtin.service:
  90. name: matrix-mautrix-facebook
  91. state: stopped
  92. enabled: false
  93. daemon_reload: true
  94. failed_when: false
  95. when: "matrix_mautrix_facebook_stat_database.stat.exists"
  96. - name: (Data relocation) Move mautrix-facebook database file to ./data directory
  97. ansible.builtin.command:
  98. cmd: "mv {{ matrix_mautrix_facebook_base_path }}/mautrix-facebook.db {{ matrix_mautrix_facebook_data_path }}/mautrix-facebook.db"
  99. creates: "{{ matrix_mautrix_facebook_data_path }}/mautrix-facebook.db"
  100. removes: "{{ matrix_mautrix_facebook_base_path }}/mautrix-facebook.db"
  101. when: "matrix_mautrix_facebook_stat_database.stat.exists"
  102. - name: Ensure mautrix-facebook config.yaml installed
  103. ansible.builtin.copy:
  104. content: "{{ matrix_mautrix_facebook_configuration | to_nice_yaml(indent=2, width=999999) }}"
  105. dest: "{{ matrix_mautrix_facebook_config_path }}/config.yaml"
  106. mode: 0644
  107. owner: "{{ matrix_user_name }}"
  108. group: "{{ matrix_group_name }}"
  109. - name: Ensure mautrix-facebook registration.yaml installed
  110. ansible.builtin.copy:
  111. content: "{{ matrix_mautrix_facebook_registration | to_nice_yaml(indent=2, width=999999) }}"
  112. dest: "{{ matrix_mautrix_facebook_config_path }}/registration.yaml"
  113. mode: 0644
  114. owner: "{{ matrix_user_name }}"
  115. group: "{{ matrix_group_name }}"
  116. - name: Ensure mautrix-facebook support files installed
  117. ansible.builtin.template:
  118. src: "{{ role_path }}/templates/{{ item }}.j2"
  119. dest: "{{ matrix_mautrix_facebook_base_path }}/{{ item }}"
  120. mode: 0640
  121. owner: "{{ matrix_user_name }}"
  122. group: "{{ matrix_group_name }}"
  123. with_items:
  124. - labels
  125. - name: Ensure matrix-mautrix-facebook container network is created
  126. community.general.docker_network:
  127. enable_ipv6: "{{ devture_systemd_docker_base_ipv6_enabled }}"
  128. name: "{{ matrix_mautrix_facebook_container_network }}"
  129. driver: bridge
  130. driver_options: "{{ devture_systemd_docker_base_container_networks_driver_options }}"
  131. - name: Ensure matrix-mautrix-facebook.service installed
  132. ansible.builtin.template:
  133. src: "{{ role_path }}/templates/systemd/matrix-mautrix-facebook.service.j2"
  134. dest: "{{ devture_systemd_docker_base_systemd_path }}/matrix-mautrix-facebook.service"
  135. mode: 0644
  136. - name: Ensure matrix-mautrix-facebook.service restarted, if necessary
  137. ansible.builtin.service:
  138. name: "matrix-mautrix-facebook.service"
  139. state: restarted
  140. daemon_reload: true
  141. when: "matrix_mautrix_facebook_requires_restart | bool"