eeca3c8dca
The `to_nice_yaml` helper will by default wrap any string YAML values on the first space after column 80. This can in worst case yield invalid YAML syntax. More details in Ansible's documentation here: https://docs.ansible.com/ansible/latest/user_guide/playbooks_filters.html#formatting-data-yaml-and-json In short, you need to explicitly provide a custom width argument of a high number of some kind to avoid the line wrapping.
116 lines
4.6 KiB
YAML
116 lines
4.6 KiB
YAML
---
|
|
|
|
- set_fact:
|
|
matrix_appservice_discord_requires_restart: false
|
|
|
|
- block:
|
|
- name: Check if an SQLite database already exists
|
|
stat:
|
|
path: "{{ matrix_appservice_discord_sqlite_database_path_local }}"
|
|
register: matrix_appservice_discord_sqlite_database_path_local_stat_result
|
|
|
|
- block:
|
|
- set_fact:
|
|
matrix_postgres_db_migration_request:
|
|
src: "{{ matrix_appservice_discord_sqlite_database_path_local }}"
|
|
dst: "{{ matrix_appservice_discord_database_connString }}"
|
|
caller: "{{ role_path|basename }}"
|
|
engine_variable_name: 'matrix_appservice_discord_database_engine'
|
|
engine_old: 'sqlite'
|
|
systemd_services_to_stop: ['matrix-appservice-discord.service']
|
|
|
|
- import_tasks: "{{ role_path }}/../matrix-postgres/tasks/util/migrate_db_to_postgres.yml"
|
|
|
|
- set_fact:
|
|
matrix_appservice_discord_requires_restart: true
|
|
when: "matrix_appservice_discord_sqlite_database_path_local_stat_result.stat.exists|bool"
|
|
when: "matrix_appservice_discord_database_engine == 'postgres'"
|
|
|
|
- name: Ensure Appservice Discord image is pulled
|
|
docker_image:
|
|
name: "{{ matrix_appservice_discord_docker_image }}"
|
|
source: "{{ 'pull' if ansible_version.major > 2 or ansible_version.minor > 7 else omit }}"
|
|
force_source: "{{ matrix_appservice_discord_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_appservice_discord_docker_image_force_pull }}"
|
|
|
|
- name: Ensure AppService Discord paths exist
|
|
file:
|
|
path: "{{ item }}"
|
|
state: directory
|
|
mode: 0750
|
|
owner: "{{ matrix_user_username }}"
|
|
group: "{{ matrix_user_groupname }}"
|
|
with_items:
|
|
- "{{ matrix_appservice_discord_base_path }}"
|
|
- "{{ matrix_appservice_discord_config_path }}"
|
|
- "{{ matrix_appservice_discord_data_path }}"
|
|
|
|
- name: Check if an old database file already exists
|
|
stat:
|
|
path: "{{ matrix_appservice_discord_base_path }}/discord.db"
|
|
register: matrix_appservice_discord_stat_db
|
|
|
|
- name: (Data relocation) Ensure matrix-appservice-discord.service is stopped
|
|
service:
|
|
name: matrix-appservice-discord
|
|
state: stopped
|
|
enabled: false
|
|
daemon_reload: true
|
|
failed_when: false
|
|
when: "matrix_appservice_discord_stat_db.stat.exists"
|
|
|
|
- name: (Data relocation) Move AppService Discord discord.db file to ./data directory
|
|
command: "mv {{ matrix_appservice_discord_base_path }}/{{ item }} {{ matrix_appservice_discord_data_path }}/{{ item }}"
|
|
with_items:
|
|
- discord.db
|
|
- user-store.db
|
|
- room-store.db
|
|
when: "matrix_appservice_discord_stat_db.stat.exists"
|
|
|
|
- name: Ensure AppService Discord config.yaml installed
|
|
copy:
|
|
content: "{{ matrix_appservice_discord_configuration|to_nice_yaml(indent=2, width=999999) }}"
|
|
dest: "{{ matrix_appservice_discord_config_path }}/config.yaml"
|
|
mode: 0644
|
|
owner: "{{ matrix_user_username }}"
|
|
group: "{{ matrix_user_groupname }}"
|
|
|
|
- name: Ensure AppService Discord registration.yaml installed
|
|
copy:
|
|
content: "{{ matrix_appservice_discord_registration|to_nice_yaml(indent=2, width=999999) }}"
|
|
dest: "{{ matrix_appservice_discord_config_path }}/registration.yaml"
|
|
mode: 0644
|
|
owner: "{{ matrix_user_username }}"
|
|
group: "{{ matrix_user_groupname }}"
|
|
|
|
# If `matrix_appservice_discord_client_id` hasn't changed, the same invite link would be generated.
|
|
# We intentionally suppress Ansible changes.
|
|
- name: Generate AppService Discord invite link
|
|
shell: >-
|
|
{{ matrix_host_command_docker }} run --rm --name matrix-appservice-discord-link-gen
|
|
--user={{ matrix_user_uid }}:{{ matrix_user_gid }}
|
|
--cap-drop=ALL
|
|
--mount type=bind,src={{ matrix_appservice_discord_config_path }},dst=/cfg
|
|
-w /cfg
|
|
{{ matrix_appservice_discord_docker_image }}
|
|
/bin/sh -c "node /build/tools/addbot.js > /cfg/invite_link"
|
|
changed_when: false
|
|
|
|
- name: Ensure matrix-appservice-discord.service installed
|
|
template:
|
|
src: "{{ role_path }}/templates/systemd/matrix-appservice-discord.service.j2"
|
|
dest: "{{ matrix_systemd_path }}/matrix-appservice-discord.service"
|
|
mode: 0644
|
|
register: matrix_appservice_discord_systemd_service_result
|
|
|
|
- name: Ensure systemd reloaded after matrix-appservice-discord.service installation
|
|
service:
|
|
daemon_reload: true
|
|
when: "matrix_appservice_discord_systemd_service_result.changed"
|
|
|
|
- name: Ensure matrix-appservice-discord.service restarted, if necessary
|
|
service:
|
|
name: "matrix-appservice-discord.service"
|
|
state: restarted
|
|
when: "matrix_appservice_discord_requires_restart|bool"
|