Merge pull request #3469 from Michael-Hollister/michael/mmr-signing-key
Automated MMR signing key generation process
This commit is contained in:
@ -319,6 +319,14 @@ matrix_media_repo_homeservers_auto: []
|
||||
# Additional servers to be managed by MMR
|
||||
matrix_media_repo_homeservers_additional: []
|
||||
|
||||
# If true, the playbook will generate a signing key when the setup role is invoked.
|
||||
# This is adjusted in `group_vars/matrix_servers` depending on the homeserver implementation.
|
||||
matrix_media_repo_generate_signing_key: false
|
||||
|
||||
# Path where the homeserver signing key is located. Set automatically in
|
||||
# `group_vars/matrix_servers` depending on which homeserver is being used.
|
||||
matrix_media_repo_homeserver_signing_key: ""
|
||||
|
||||
# Options for controlling how access tokens work with the media repo. It is recommended that if
|
||||
# you are going to use these options that the `/logout` and `/logout/all` client-server endpoints
|
||||
# be proxied through this process. They will also be called on the homeserver, and the response
|
||||
|
@ -77,6 +77,63 @@
|
||||
changed_when: true
|
||||
when: "matrix_media_repo_git_pull_results.changed | bool or matrix_media_repo_docker_image_check_result.stdout == ''"
|
||||
|
||||
- name: Check existence of media-repo signing key
|
||||
ansible.builtin.stat:
|
||||
path: "{{ matrix_media_repo_config_path }}/{{ matrix_media_repo_identifier }}.signing.key"
|
||||
register: matrix_media_repo_signing_key_stat
|
||||
|
||||
- when: "matrix_media_repo_generate_signing_key | bool and not (matrix_media_repo_signing_key_stat.stat.exists | bool)"
|
||||
block:
|
||||
- name: Generate media-repo signing key
|
||||
ansible.builtin.command:
|
||||
cmd: |
|
||||
{{ devture_systemd_docker_base_host_command_docker }} run
|
||||
--rm
|
||||
--name={{ matrix_media_repo_identifier }}
|
||||
--user={{ matrix_synapse_uid }}:{{ matrix_synapse_gid }}
|
||||
--cap-drop=ALL
|
||||
--mount type=bind,src={{ matrix_media_repo_config_path }},dst=/config
|
||||
--workdir='/config'
|
||||
--entrypoint='generate_signing_key'
|
||||
{{ matrix_media_repo_docker_image }}
|
||||
-output {{ matrix_media_repo_identifier }}.signing.key.TEMP
|
||||
creates: "{{ matrix_media_repo_config_path }}/{{ matrix_media_repo_identifier }}.signing.key.TEMP"
|
||||
|
||||
- name: Merge media-repo signing key with homeserver signing key
|
||||
ansible.builtin.command:
|
||||
cmd: |
|
||||
{{ devture_systemd_docker_base_host_command_docker }} run
|
||||
--rm
|
||||
--name={{ matrix_media_repo_identifier }}
|
||||
--user={{ matrix_synapse_uid }}:{{ matrix_synapse_gid }}
|
||||
--cap-drop=ALL
|
||||
--mount type=bind,src={{ matrix_media_repo_config_path }},dst=/config
|
||||
--mount type=bind,src={{ matrix_media_repo_homeserver_signing_key | dirname }},dst=/homeserver-signing-key-dir
|
||||
--workdir='/config'
|
||||
--entrypoint='combine_signing_keys'
|
||||
{{ matrix_media_repo_docker_image }}
|
||||
-format {{ matrix_homeserver_implementation }} -output /homeserver-signing-key-dir/{{ matrix_media_repo_homeserver_signing_key | basename }}.merged /homeserver-signing-key-dir/{{ matrix_media_repo_homeserver_signing_key | basename }} {{ matrix_media_repo_identifier }}.signing.key.TEMP
|
||||
creates: "{{ matrix_media_repo_homeserver_signing_key }}.merged"
|
||||
|
||||
- name: Backup existing homeserver signing key before replacing it
|
||||
ansible.builtin.copy:
|
||||
remote_src: true
|
||||
src: "{{ matrix_media_repo_homeserver_signing_key }}"
|
||||
dest: "{{ matrix_media_repo_homeserver_signing_key }}.{{ matrix_homeserver_implementation }}.backup"
|
||||
mode: 0644
|
||||
owner: "{{ matrix_user_username }}"
|
||||
group: "{{ matrix_user_groupname }}"
|
||||
|
||||
- name: Replace homeserver signing key with merged signing key
|
||||
ansible.builtin.command:
|
||||
cmd: "mv {{ matrix_media_repo_homeserver_signing_key }}.merged {{ matrix_media_repo_homeserver_signing_key }}"
|
||||
removes: "{{ matrix_media_repo_homeserver_signing_key }}.merged"
|
||||
|
||||
- name: Finalize media-repo signing key setup
|
||||
ansible.builtin.command:
|
||||
cmd: "mv {{ matrix_media_repo_config_path }}/{{ matrix_media_repo_identifier }}.signing.key.TEMP {{ matrix_media_repo_config_path }}/{{ matrix_media_repo_identifier }}.signing.key"
|
||||
removes: "{{ matrix_media_repo_config_path }}/{{ matrix_media_repo_identifier }}.signing.key.TEMP"
|
||||
|
||||
- name: Ensure media-repo container network is created
|
||||
community.general.docker_network:
|
||||
enable_ipv6: "{{ devture_systemd_docker_base_ipv6_enabled }}"
|
||||
|
Reference in New Issue
Block a user