Make Facebook bridge configuration playbook-managed
Related to #193, but for the Facebook bridge. (other bridges can be changed to do the same later). This patch makes the bridge configuration entirely managed by the Ansible playbook. The bridge's `config.yaml` and `registration.yaml` configuration files are regenerated every time the playbook runs. This allows us to apply updates to those files and to avoid people having to manage the configuration files manually on the server. ------------------------------------------------------------- A deficiency of the current approach to dumping YAML configuration in `config.yaml` is that we strip all comments from it. Later on, when the bridge actually starts, it will load and redump (this time with comments), which will make the `config.yaml` file change. Subsequent playbook runs will report "changed" for the "Ensure mautrix-facebook config.yaml installed" task, which is a little strange. We might wish to improve this in the future, if possible. Still, it's better to have a (usually) somewhat meaningless "changed" task than to what we had -- never rebuilding the configuration.
This commit is contained in:
@ -2,6 +2,12 @@
|
||||
tags:
|
||||
- always
|
||||
|
||||
- import_tasks: "{{ role_path }}/tasks/validate_config.yml"
|
||||
when: "run_setup|bool and matrix_mautrix_facebook_enabled|bool"
|
||||
tags:
|
||||
- setup-all
|
||||
- setup-mautrix-facebook
|
||||
|
||||
- import_tasks: "{{ role_path }}/tasks/setup_install.yml"
|
||||
when: "run_setup|bool and matrix_mautrix_facebook_enabled|bool"
|
||||
tags:
|
||||
|
@ -21,19 +21,21 @@
|
||||
owner: "{{ matrix_user_username }}"
|
||||
group: "{{ matrix_user_username }}"
|
||||
|
||||
- name: Check if a mautrix-facebook configuration file exists
|
||||
stat:
|
||||
path: "{{ matrix_mautrix_facebook_base_path }}/config.yaml"
|
||||
register: mautrix_facebook_config_file_stat
|
||||
|
||||
- name: Ensure Matrix Mautrix facebook config installed
|
||||
template:
|
||||
src: "{{ role_path }}/templates/config.yaml.j2"
|
||||
- name: Ensure mautrix-facebook config.yaml installed
|
||||
copy:
|
||||
content: "{{ matrix_mautrix_facebook_configuration|to_nice_yaml }}"
|
||||
dest: "{{ matrix_mautrix_facebook_base_path }}/config.yaml"
|
||||
mode: 0644
|
||||
owner: "{{ matrix_user_username }}"
|
||||
group: "{{ matrix_user_username }}"
|
||||
when: "not mautrix_facebook_config_file_stat.stat.exists"
|
||||
|
||||
- name: Ensure mautrix-facebook registration.yaml installed
|
||||
copy:
|
||||
content: "{{ matrix_mautrix_facebook_registration|to_nice_yaml }}"
|
||||
dest: "{{ matrix_mautrix_facebook_base_path }}/registration.yaml"
|
||||
mode: 0644
|
||||
owner: "{{ matrix_user_username }}"
|
||||
group: "{{ matrix_user_username }}"
|
||||
|
||||
- name: Ensure matrix-mautrix-facebook.service installed
|
||||
template:
|
||||
@ -47,24 +49,6 @@
|
||||
daemon_reload: yes
|
||||
when: "matrix_mautrix_facebook_systemd_service_result.changed"
|
||||
|
||||
- name: Check if a mautrix-facebook registration file exists
|
||||
stat:
|
||||
path: "{{ matrix_mautrix_facebook_base_path }}/registration.yaml"
|
||||
register: mautrix_facebook_registration_file_stat
|
||||
|
||||
- name: Generate matrix-mautrix-facebook registration.yaml if it doesn't exist
|
||||
shell:
|
||||
cmd: >-
|
||||
/usr/bin/docker run
|
||||
--rm
|
||||
--user={{ matrix_user_uid }}:{{ matrix_user_gid }}
|
||||
--cap-drop=ALL
|
||||
--name matrix-mautrix-facebook-gen
|
||||
-v {{ matrix_mautrix_facebook_base_path }}:/data:z
|
||||
{{ matrix_mautrix_facebook_docker_image }}
|
||||
python3 -m mautrix_facebook -g -c /data/config.yaml -r /data/registration.yaml
|
||||
when: "not mautrix_facebook_registration_file_stat.stat.exists"
|
||||
|
||||
# If the matrix-synapse role is not used, these variables may not exist.
|
||||
- set_fact:
|
||||
matrix_synapse_container_extra_arguments: >
|
||||
|
@ -0,0 +1,10 @@
|
||||
---
|
||||
|
||||
- name: Fail if required settings not defined
|
||||
fail:
|
||||
msg: >-
|
||||
You need to define a required configuration setting (`{{ item }}`).
|
||||
when: "vars[item] == ''"
|
||||
with_items:
|
||||
- "matrix_mautrix_facebook_appservice_token"
|
||||
- "matrix_mautrix_facebook_homeserver_token"
|
Reference in New Issue
Block a user