From f2f3d41649d0d3a9a5c50e143bfeb1167de25844 Mon Sep 17 00:00:00 2001 From: Slavi Pantaleev Date: Sun, 25 Aug 2019 10:58:30 +0300 Subject: [PATCH] Make matrix-corporal configuration extensible Fixes #70 (Github Issue). --- roles/matrix-corporal/defaults/main.yml | 35 +++++++++++++++++++ .../matrix-corporal/tasks/setup_corporal.yml | 6 ++-- .../matrix-corporal/templates/config.json.j2 | 1 - 3 files changed, 39 insertions(+), 3 deletions(-) diff --git a/roles/matrix-corporal/defaults/main.yml b/roles/matrix-corporal/defaults/main.yml index c8694535..37d76e06 100644 --- a/roles/matrix-corporal/defaults/main.yml +++ b/roles/matrix-corporal/defaults/main.yml @@ -53,3 +53,38 @@ matrix_corporal_http_api_auth_token: "" matrix_corporal_policy_provider_config: "" matrix_corporal_debug: false + + +# Default Corporal configuration template which covers the generic use case. +# You can customize it by controlling the various variables inside it. +# +# For a more advanced customization, you can extend the default (see `matrix_corporal_configuration_extension_json`) +# or completely replace this variable with your own template. +# +# The side-effect of this lookup is that Ansible would even parse the JSON for us, returning a dict. +# This is unlike what it does when looking up YAML template files (no automatic parsing there). +matrix_corporal_configuration_default: "{{ lookup('template', 'templates/config.json.j2') }}" + +# Your custom JSON configuration for Corporal should go to `matrix_corporal_configuration_extension_json`. +# This configuration extends the default starting configuration (`matrix_corporal_configuration_default`). +# +# You can override individual variables from the default configuration, or introduce new ones. +# +# If you need something more special, you can take full control by +# completely redefining `matrix_corporal_configuration_default`. +# +# Example configuration extension follows: +# +# matrix_corporal_configuration_extension_json: | +# { +# "Matrix": { +# "TimeoutMilliseconds": 60000 +# } +# } +matrix_corporal_configuration_extension_json: '{}' + +matrix_corporal_configuration_extension: "{{ matrix_corporal_configuration_extension_json|from_json if matrix_corporal_configuration_extension_json|from_json is mapping else {} }}" + +# Holds the final Corporal configuration (a combination of the default and its extension). +# You most likely don't need to touch this variable. Instead, see `matrix_corporal_configuration_default`. +matrix_corporal_configuration: "{{ matrix_corporal_configuration_default|combine(matrix_corporal_configuration_extension, recursive=True) }}" diff --git a/roles/matrix-corporal/tasks/setup_corporal.yml b/roles/matrix-corporal/tasks/setup_corporal.yml index 1fe19732..d3e4f907 100644 --- a/roles/matrix-corporal/tasks/setup_corporal.yml +++ b/roles/matrix-corporal/tasks/setup_corporal.yml @@ -26,10 +26,12 @@ when: matrix_corporal_enabled|bool - name: Ensure Matrix Corporal config installed - template: - src: "{{ role_path }}/templates/config.json.j2" + copy: + content: "{{ matrix_corporal_configuration|to_nice_json }}" dest: "{{ matrix_corporal_config_dir_path }}/config.json" mode: 0644 + owner: "{{ matrix_user_username }}" + group: "{{ matrix_user_username }}" when: matrix_corporal_enabled|bool - name: Ensure matrix-corporal.service installed diff --git a/roles/matrix-corporal/templates/config.json.j2 b/roles/matrix-corporal/templates/config.json.j2 index e2333bcc..378b2c19 100644 --- a/roles/matrix-corporal/templates/config.json.j2 +++ b/roles/matrix-corporal/templates/config.json.j2 @@ -1,4 +1,3 @@ -#jinja2: lstrip_blocks: "True" { "Matrix": { "HomeserverDomainName": "{{ matrix_corporal_matrix_homeserver_domain_name }}",