mirror of
https://github.com/spantaleev/matrix-docker-ansible-deploy.git
synced 2024-11-07 16:12:43 +00:00
a095accce7
Not hardcoding 'CentOS' and using the OS family ('RedHat') instead, we now behave better on Rockylinux and AlmaLinux, etc. With that said, we may or may not fully support CentOS/Rockylinux/AlmaLinux v8 yet. Certain things were improved in https://github.com/spantaleev/matrix-docker-ansible-deploy/issues/300. v8 support is discussed here: https://github.com/spantaleev/matrix-docker-ansible-deploy/issues/300 Certain things (firewalld?) may still be problematic. This patch does not try to address those. If the remaining issues are confirmed to be fixed in the future, we can mark v8 as supported.
168 lines
7.0 KiB
YAML
168 lines
7.0 KiB
YAML
---
|
|
|
|
- name: Ensure ma1sd paths exist
|
|
file:
|
|
path: "{{ item.path }}"
|
|
state: directory
|
|
mode: 0750
|
|
owner: "{{ matrix_user_username }}"
|
|
group: "{{ matrix_user_groupname }}"
|
|
with_items:
|
|
- { path: "{{ matrix_ma1sd_config_path }}", when: true }
|
|
- { path: "{{ matrix_ma1sd_data_path }}", when: true }
|
|
- { path: "{{ matrix_ma1sd_docker_src_files_path }}", when: "{{ matrix_ma1sd_container_image_self_build }}"}
|
|
when: "item.when|bool"
|
|
|
|
- import_tasks: "{{ role_path }}/tasks/migrate_mxisd.yml"
|
|
|
|
|
|
# These (SQLite -> Postgres) migration tasks are usually at the top,
|
|
# but we'd like to run them after `migrate_mxisd.yml`, which requires the ma1sd paths to exist.
|
|
- set_fact:
|
|
matrix_ma1sd_requires_restart: false
|
|
|
|
- block:
|
|
- name: Check if an SQLite database already exists
|
|
stat:
|
|
path: "{{ matrix_ma1sd_sqlite_database_path_local }}"
|
|
register: matrix_ma1sd_sqlite_database_path_local_stat_result
|
|
|
|
- block:
|
|
- set_fact:
|
|
matrix_postgres_db_migration_request:
|
|
src: "{{ matrix_ma1sd_sqlite_database_path_local }}"
|
|
dst: "{{ matrix_ma1sd_database_connection_string }}"
|
|
caller: "{{ role_path|basename }}"
|
|
engine_variable_name: 'matrix_ma1sd_database_engine'
|
|
engine_old: 'sqlite'
|
|
systemd_services_to_stop: ['matrix-ma1sd.service']
|
|
pgloader_options: ['--with "quote identifiers"']
|
|
|
|
- import_tasks: "{{ role_path }}/../matrix-postgres/tasks/util/migrate_db_to_postgres.yml"
|
|
|
|
- set_fact:
|
|
matrix_ma1sd_requires_restart: true
|
|
when: "matrix_ma1sd_sqlite_database_path_local_stat_result.stat.exists|bool"
|
|
when: "matrix_ma1sd_database_engine == 'postgres'"
|
|
|
|
- name: Ensure ma1sd image is pulled
|
|
docker_image:
|
|
name: "{{ matrix_ma1sd_docker_image }}"
|
|
source: "{{ 'pull' if ansible_version.major > 2 or ansible_version.minor > 7 else omit }}"
|
|
force_source: "{{ matrix_ma1sd_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_ma1sd_docker_image_force_pull }}"
|
|
when: "not matrix_ma1sd_container_image_self_build|bool"
|
|
|
|
- block:
|
|
- name: Ensure gradle is installed for self-building (Debian)
|
|
apt:
|
|
name:
|
|
- gradle
|
|
state: present
|
|
update_cache: yes
|
|
when: (ansible_os_family == 'Debian')
|
|
|
|
- name: Ensure gradle is installed for self-building (RedHat)
|
|
fail:
|
|
msg: "Installing gradle on RedHat ({{ ansible_distribution }}) is currently not supported, so self-building ma1sd cannot happen at this time"
|
|
when: ansible_os_family == 'RedHat'
|
|
|
|
- name: Ensure gradle is installed for self-building (Archlinux)
|
|
pacman:
|
|
name:
|
|
- gradle
|
|
state: latest
|
|
update_cache: yes
|
|
when: ansible_distribution == 'Archlinux'
|
|
|
|
- name: Ensure ma1sd repository is present on self-build
|
|
git:
|
|
repo: "{{ matrix_ma1sd_container_image_self_build_repo }}"
|
|
dest: "{{ matrix_ma1sd_docker_src_files_path }}"
|
|
version: "{{ matrix_ma1sd_container_image_self_build_branch }}"
|
|
force: "yes"
|
|
register: matrix_ma1sd_git_pull_results
|
|
|
|
- name: Ensure ma1sd Docker image is built
|
|
shell: "DOCKER_BUILDKIT=1 ./gradlew dockerBuild"
|
|
args:
|
|
chdir: "{{ matrix_ma1sd_docker_src_files_path }}"
|
|
|
|
- name: Ensure ma1sd Docker image is tagged correctly
|
|
docker_image:
|
|
# The build script always tags the image with 2 tags:
|
|
# - based on the branch/version: e.g. `ma1uta/ma1sd:2.4.0` (when on `2.4.0`)
|
|
# or `ma1uta/ma1sd:2.4.0-19-ga71d32b` (when on a given commit for a pre-release)
|
|
# - generic one: `ma1uta/ma1sd:latest-dev`
|
|
#
|
|
# It's hard to predict the first one, so we'll use the latter.
|
|
name: "ma1uta/ma1sd:latest-dev"
|
|
repository: "{{ matrix_ma1sd_docker_image }}"
|
|
force_tag: yes
|
|
source: local
|
|
when: "matrix_ma1sd_container_image_self_build|bool"
|
|
|
|
- name: Ensure ma1sd config installed
|
|
copy:
|
|
content: "{{ matrix_ma1sd_configuration|to_nice_yaml }}"
|
|
dest: "{{ matrix_ma1sd_config_path }}/ma1sd.yaml"
|
|
mode: 0644
|
|
owner: "{{ matrix_user_username }}"
|
|
group: "{{ matrix_user_groupname }}"
|
|
|
|
- name: Ensure custom view templates are installed, if any
|
|
copy:
|
|
content: "{{ item.value }}"
|
|
dest: "{{ matrix_ma1sd_config_path }}/{{ item.location }}"
|
|
mode: 0644
|
|
owner: "{{ matrix_user_username }}"
|
|
group: "{{ matrix_user_groupname }}"
|
|
with_items:
|
|
- {value: "{{ matrix_ma1sd_view_session_custom_onTokenSubmit_success_template }}", location: 'tokenSubmitSuccess.html'}
|
|
- {value: "{{ matrix_ma1sd_view_session_custom_onTokenSubmit_failure_template }}", location: 'tokenSubmitFailure.html'}
|
|
when: "matrix_ma1sd_view_session_custom_templates_enabled|bool and item.value"
|
|
|
|
- name: Ensure custom email templates are installed, if any
|
|
copy:
|
|
content: "{{ item.value }}"
|
|
dest: "{{ matrix_ma1sd_config_path }}/{{ item.location }}"
|
|
mode: 0644
|
|
owner: "{{ matrix_user_username }}"
|
|
group: "{{ matrix_user_groupname }}"
|
|
with_items:
|
|
- {value: "{{ matrix_ma1sd_threepid_medium_email_custom_invite_template }}", location: 'invite-template.eml'}
|
|
- {value: "{{ matrix_ma1sd_threepid_medium_email_custom_session_validation_template }}", location: 'validate-template.eml'}
|
|
- {value: "{{ matrix_ma1sd_threepid_medium_email_custom_session_unbind_notification_template }}", location: 'unbind-notification.eml'}
|
|
- {value: "{{ matrix_ma1sd_threepid_medium_email_custom_matrixid_template }}", location: 'mxid-template.eml'}
|
|
when: "matrix_ma1sd_threepid_medium_email_custom_templates_enabled|bool and item.value"
|
|
|
|
# Only cleaning up for people who define the respective templates
|
|
- name: (Cleanup) Ensure custom email templates are not in data/ anymore (we've put them in config/)
|
|
file:
|
|
path: "{{ matrix_ma1sd_data_path }}/{{ item.location }}"
|
|
state: absent
|
|
with_items:
|
|
- {value: "{{ matrix_ma1sd_threepid_medium_email_custom_invite_template }}", location: 'invite-template.eml'}
|
|
- {value: "{{ matrix_ma1sd_threepid_medium_email_custom_session_validation_template }}", location: 'validate-template.eml'}
|
|
- {value: "{{ matrix_ma1sd_threepid_medium_email_custom_session_unbind_notification_template }}", location: 'unbind-notification.eml'}
|
|
- {value: "{{ matrix_ma1sd_threepid_medium_email_custom_matrixid_template }}", location: 'mxid-template.eml'}
|
|
when: "matrix_ma1sd_threepid_medium_email_custom_templates_enabled|bool and item.value"
|
|
|
|
- name: Ensure matrix-ma1sd.service installed
|
|
template:
|
|
src: "{{ role_path }}/templates/systemd/matrix-ma1sd.service.j2"
|
|
dest: "{{ matrix_systemd_path }}/matrix-ma1sd.service"
|
|
mode: 0644
|
|
register: matrix_ma1sd_systemd_service_result
|
|
|
|
- name: Ensure systemd reloaded after matrix-ma1sd.service installation
|
|
service:
|
|
daemon_reload: yes
|
|
when: "matrix_ma1sd_systemd_service_result.changed|bool"
|
|
|
|
- name: Ensure matrix-ma1sd.service restarted, if necessary
|
|
service:
|
|
name: "matrix-ma1sd.service"
|
|
state: restarted
|
|
when: "matrix_ma1sd_requires_restart|bool"
|