Matrix Docker Ansible eploy
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 

142 rivejä
6.4 KiB

  1. # SPDX-FileCopyrightText: 2019 - 2022 MDAD project contributors
  2. # SPDX-FileCopyrightText: 2019 - 2024 Slavi Pantaleev
  3. # SPDX-FileCopyrightText: 2020 Chris van Dijk
  4. # SPDX-FileCopyrightText: 2021 Panagiotis Georgiadis
  5. # SPDX-FileCopyrightText: 2022 Jim Myhrberg
  6. # SPDX-FileCopyrightText: 2022 Marko Weltzer
  7. # SPDX-FileCopyrightText: 2022 Nikita Chernyi
  8. # SPDX-FileCopyrightText: 2022 Sebastian Gumprich
  9. # SPDX-FileCopyrightText: 2024 David Mehren
  10. #
  11. # SPDX-License-Identifier: AGPL-3.0-or-later
  12. ---
  13. - name: Ensure AppService Slack paths exist
  14. ansible.builtin.file:
  15. path: "{{ item.path }}"
  16. state: directory
  17. mode: '0750'
  18. owner: "{{ matrix_user_name }}"
  19. group: "{{ matrix_group_name }}"
  20. with_items:
  21. - {path: "{{ matrix_appservice_slack_base_path }}", when: true}
  22. - {path: "{{ matrix_appservice_slack_config_path }}", when: true}
  23. - {path: "{{ matrix_appservice_slack_data_path }}", when: true}
  24. - {path: "{{ matrix_appservice_slack_docker_src_files_path }}", when: "{{ matrix_appservice_slack_container_image_self_build }}"}
  25. when: item.when | bool
  26. - ansible.builtin.set_fact:
  27. matrix_appservice_slack_migration_requires_restart: false
  28. - when: "matrix_appservice_slack_database_engine == 'postgres'"
  29. block:
  30. - name: Check if a nedb database already exists
  31. ansible.builtin.stat:
  32. path: "{{ matrix_appservice_slack_data_path }}/teams.db"
  33. register: matrix_appservice_slack_nedb_database_path_local_stat_result
  34. - when: "matrix_appservice_slack_nedb_database_path_local_stat_result.stat.exists | bool"
  35. block:
  36. - ansible.builtin.include_tasks: "{{ role_path }}/tasks/migrate_nedb_to_postgres.yml"
  37. - ansible.builtin.set_fact:
  38. matrix_appservice_slack_migration_requires_restart: true
  39. - name: Ensure Appservice Slack image is pulled
  40. community.docker.docker_image:
  41. name: "{{ matrix_appservice_slack_docker_image }}"
  42. source: "{{ 'pull' if ansible_version.major > 2 or ansible_version.minor > 7 else omit }}"
  43. force_source: "{{ matrix_appservice_slack_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_appservice_slack_docker_image_force_pull }}"
  45. when: "not matrix_appservice_slack_container_image_self_build | bool"
  46. register: matrix_appservice_slack_container_image_pull_result
  47. retries: "{{ devture_playbook_help_container_retries_count }}"
  48. delay: "{{ devture_playbook_help_container_retries_delay }}"
  49. until: matrix_appservice_slack_container_image_pull_result is not failed
  50. - name: Ensure matrix-appservice-slack repository is present when self-building
  51. ansible.builtin.git:
  52. repo: "{{ matrix_appservice_slack_docker_repo }}"
  53. version: "{{ matrix_appservice_slack_docker_repo_version }}"
  54. dest: "{{ matrix_appservice_slack_docker_src_files_path }}"
  55. force: "yes"
  56. become: true
  57. become_user: "{{ matrix_user_name }}"
  58. register: matrix_appservice_slack_git_pull_results
  59. when: "matrix_appservice_slack_container_image_self_build | bool"
  60. - name: Ensure matrix-appservice-slack Docker image is built
  61. community.docker.docker_image:
  62. name: "{{ matrix_appservice_slack_docker_image }}"
  63. source: build
  64. force_source: "{{ matrix_appservice_slack_git_pull_results.changed if ansible_version.major > 2 or ansible_version.minor >= 8 else omit }}"
  65. force: "{{ omit if ansible_version.major > 2 or ansible_version.minor >= 8 else matrix_appservice_slack_git_pull_results.changed }}"
  66. build:
  67. dockerfile: Dockerfile
  68. path: "{{ matrix_appservice_slack_docker_src_files_path }}"
  69. pull: true
  70. when: "matrix_appservice_slack_container_image_self_build | bool and matrix_appservice_slack_git_pull_results.changed"
  71. - name: Ensure Matrix Appservice Slack config installed
  72. ansible.builtin.copy:
  73. content: "{{ matrix_appservice_slack_configuration | to_nice_yaml(indent=2, width=999999) }}"
  74. dest: "{{ matrix_appservice_slack_config_path }}/config.yaml"
  75. mode: '0644'
  76. owner: "{{ matrix_user_name }}"
  77. group: "{{ matrix_group_name }}"
  78. register: matrix_appservice_slack_config_result
  79. - name: Ensure appservice-slack registration.yaml installed
  80. ansible.builtin.copy:
  81. content: "{{ matrix_appservice_slack_registration | to_nice_yaml(indent=2, width=999999) }}"
  82. dest: "{{ matrix_appservice_slack_config_path }}/slack-registration.yaml"
  83. mode: '0644'
  84. owner: "{{ matrix_user_name }}"
  85. group: "{{ matrix_group_name }}"
  86. register: matrix_appservice_slack_registration_result
  87. - name: Ensure matrix-appservice-slack container network is created
  88. community.general.docker_network:
  89. enable_ipv6: "{{ devture_systemd_docker_base_ipv6_enabled }}"
  90. name: "{{ matrix_appservice_slack_container_network }}"
  91. driver: bridge
  92. driver_options: "{{ devture_systemd_docker_base_container_networks_driver_options }}"
  93. - name: Ensure matrix-appservice-slack support files installed
  94. ansible.builtin.template:
  95. src: "{{ role_path }}/templates/{{ item }}.j2"
  96. dest: "{{ matrix_appservice_slack_base_path }}/{{ item }}"
  97. mode: '0640'
  98. owner: "{{ matrix_user_name }}"
  99. group: "{{ matrix_group_name }}"
  100. with_items:
  101. - labels
  102. register: matrix_appservice_slack_support_files_result
  103. - name: Ensure matrix-appservice-slack.service installed
  104. ansible.builtin.template:
  105. src: "{{ role_path }}/templates/systemd/matrix-appservice-slack.service.j2"
  106. dest: "{{ devture_systemd_docker_base_systemd_path }}/matrix-appservice-slack.service"
  107. mode: '0644'
  108. register: matrix_appservice_slack_systemd_service_result
  109. - name: Determine whether matrix-appservice-slack needs a restart
  110. ansible.builtin.set_fact:
  111. matrix_appservice_slack_restart_necessary: >-
  112. {{
  113. matrix_appservice_slack_migration_requires_restart | default(false)
  114. or matrix_appservice_slack_config_result.changed | default(false)
  115. or matrix_appservice_slack_registration_result.changed | default(false)
  116. or matrix_appservice_slack_support_files_result.changed | default(false)
  117. or matrix_appservice_slack_systemd_service_result.changed | default(false)
  118. or matrix_appservice_slack_container_image_pull_result.changed | default(false)
  119. }}
  120. - name: Ensure matrix-appservice-slack.service restarted, if necessary
  121. ansible.builtin.service:
  122. name: "matrix-appservice-slack.service"
  123. state: restarted
  124. daemon_reload: true
  125. when: "matrix_appservice_slack_migration_requires_restart | bool"