7d3adc4512
We do use some `:latest` images by default for the following services: - matrix-dimension - Goofys (in the matrix-synapse role) - matrix-bridge-appservice-irc - matrix-bridge-appservice-discord - matrix-bridge-mautrix-facebook - matrix-bridge-mautrix-whatsapp It's terribly unfortunate that those software projects don't release anything other than `:latest`, but that's how it is for now. Updating that software requires that users manually do `docker pull` on the server. The playbook didn't force-repull images that it already had. With this patch, it starts doing so. Any image tagged `:latest` will be force re-pulled by the playbook every time it's executed. It should be noted that even though we ask the `docker_image` module to force-pull, it only reports "changed" when it actually pulls something new. This is nice, because it lets people know exactly when something gets updated, as opposed to giving the indication that it's always updating the images (even though it isn't).
94 lines
3.6 KiB
YAML
94 lines
3.6 KiB
YAML
---
|
|
|
|
# If the matrix-synapse role is not used, `matrix_synapse_role_executed` won't exist.
|
|
# We don't want to fail in such cases.
|
|
- name: Fail if matrix-synapse role already executed
|
|
fail:
|
|
msg: >-
|
|
The matrix-bridge-appservice-irc role needs to execute before the matrix-synapse role.
|
|
when: "matrix_synapse_role_executed|default(False)"
|
|
|
|
- name: Ensure Appservice IRC image is pulled
|
|
docker_image:
|
|
name: "{{ matrix_appservice_irc_docker_image }}"
|
|
source: "{{ 'pull' if ansible_version.major > 2 or ansible_version.minor > 7 else omit }}"
|
|
force_source: "{{ matrix_appservice_irc_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_irc_docker_image_force_pull }}"
|
|
|
|
- name: Ensure Appservice IRC base directory exists
|
|
file:
|
|
path: "{{ matrix_appservice_irc_base_path }}"
|
|
state: directory
|
|
mode: 0750
|
|
owner: "{{ matrix_user_username }}"
|
|
group: "{{ matrix_user_username }}"
|
|
|
|
- name: Ensure Matrix Appservice IRC config installed
|
|
copy:
|
|
content: "{{ matrix_appservice_irc_configuration|to_nice_yaml }}"
|
|
dest: "{{ matrix_appservice_irc_base_path }}/config.yaml"
|
|
mode: 0644
|
|
owner: "{{ matrix_user_username }}"
|
|
group: "{{ matrix_user_username }}"
|
|
|
|
- name: Check if matrix-appservice-irc passkey exists
|
|
stat:
|
|
path: "{{ matrix_appservice_irc_base_path }}/passkey.pem"
|
|
register: irc_passkey_file
|
|
|
|
- name: Generate matrix-appservice-irc passkey if it doesn't exist
|
|
shell: /usr/bin/openssl genpkey -out {{ matrix_appservice_irc_base_path }}/passkey.pem -outform PEM -algorithm RSA -pkeyopt rsa_keygen_bits:2048
|
|
when: "not irc_passkey_file.stat.exists"
|
|
|
|
- name: Ensure matrix-appservice-irc.service installed
|
|
template:
|
|
src: "{{ role_path }}/templates/systemd/matrix-appservice-irc.service.j2"
|
|
dest: "/etc/systemd/system/matrix-appservice-irc.service"
|
|
mode: 0644
|
|
register: matrix_appservice_irc_systemd_service_result
|
|
|
|
- name: Ensure systemd reloaded after matrix-appservice-irc.service installation
|
|
service:
|
|
daemon_reload: yes
|
|
when: "matrix_appservice_irc_systemd_service_result.changed"
|
|
|
|
- name: Check if a matrix-appservice-irc registration file exists
|
|
stat:
|
|
path: "{{ matrix_appservice_irc_base_path }}/registration.yaml"
|
|
register: appservice_irc_registration_file
|
|
|
|
- name: Generate matrix-appservice-irc registration.yaml if it doesn't exist
|
|
shell: >-
|
|
/usr/bin/docker run --rm --name matrix-appservice-irc-gen
|
|
--user={{ matrix_user_uid }}:{{ matrix_user_gid }} \
|
|
--cap-drop=ALL \
|
|
-v {{ matrix_appservice_irc_base_path }}:/data:z
|
|
{{ matrix_appservice_irc_docker_image }}
|
|
node app.js
|
|
-r
|
|
-f /data/registration.yaml
|
|
-u "http://matrix-appservice-irc:9999"
|
|
-c /data/config.yaml
|
|
-l irc_bot
|
|
when: "not appservice_irc_registration_file.stat.exists"
|
|
|
|
# If the matrix-synapse role is not used, these variables may not exist.
|
|
- set_fact:
|
|
matrix_synapse_container_extra_arguments: >
|
|
{{ matrix_synapse_container_extra_arguments|default([]) }}
|
|
+
|
|
{{ ["--mount type=bind,src={{ matrix_appservice_irc_base_path }}/registration.yaml,dst=/matrix-appservice-irc-registration.yaml,ro"] }}
|
|
|
|
matrix_synapse_app_service_config_files: >
|
|
{{ matrix_synapse_app_service_config_files|default([]) }}
|
|
+
|
|
{{ ["/matrix-appservice-irc-registration.yaml"] }}
|
|
|
|
- name: Ensure IRC configuration directory permissions are correct
|
|
file:
|
|
path: "{{ matrix_appservice_irc_base_path }}"
|
|
state: directory
|
|
owner: "{{ matrix_user_username }}"
|
|
group: "{{ matrix_user_username }}"
|
|
recurse: true
|