mirror of
https://github.com/kevinveenbirkenbach/computer-playbook.git
synced 2025-08-30 15:28:12 +02:00
THE HUGE REFACTORING CALENDER WEEK 33; Optimized Matrix and during this updated variables, and implemented better reset and cleanup mode handling, also solved some initial setup bugs
This commit is contained in:
120
roles/web-app-matrix/tasks/01_docker.yml
Normal file
120
roles/web-app-matrix/tasks/01_docker.yml
Normal file
@@ -0,0 +1,120 @@
|
||||
- name: "load docker and db for {{ application_id }}"
|
||||
include_role:
|
||||
name: cmp-db-docker
|
||||
vars:
|
||||
docker_compose_flush_handlers: false
|
||||
|
||||
- name: include 02_create-and-seed-database.yml for multiple bridges
|
||||
include_tasks: 02_create-and-seed-database.yml
|
||||
vars:
|
||||
database_password: "{{ item.database_password }}"
|
||||
database_username: "{{ item.database_username }}"
|
||||
database_name: "{{ item.database_name }}"
|
||||
loop: "{{ MATRIX_BRIDGES }}"
|
||||
|
||||
# The following taks are necessary because a clean setup is necessary
|
||||
- name: shut down docker compose project
|
||||
command:
|
||||
cmd: docker-compose -p "{{ MATRIX_PROJECT }}" down
|
||||
chdir: "{{ docker_compose.directories.instance }}"
|
||||
|
||||
- name: "cleanup project folder"
|
||||
file:
|
||||
path: "{{ docker_compose.directories.instance }}mautrix/"
|
||||
state: absent
|
||||
|
||||
- name: "create bridge folders"
|
||||
file:
|
||||
path: "{{ docker_compose.directories.instance }}mautrix/{{ item.bridge_name }}"
|
||||
state: directory
|
||||
mode: "0755"
|
||||
loop: "{{ MATRIX_BRIDGES }}"
|
||||
|
||||
- name: add multiple mautrix bridge configuration
|
||||
template:
|
||||
src: "mautrix/{{ item.bridge_name }}.config.yml.j2"
|
||||
dest: "{{ docker_compose.directories.instance }}mautrix/{{ item.bridge_name }}/config.yaml"
|
||||
loop: "{{ MATRIX_BRIDGES }}"
|
||||
notify: docker compose up
|
||||
|
||||
- name: add element configuration
|
||||
template:
|
||||
src: "element.config.json.j2"
|
||||
dest: "{{ MATRIX_ELEMENT_CONFIG_PATH_HOST }}"
|
||||
notify: docker compose up
|
||||
|
||||
- name: add synapse homeserver configuration
|
||||
template:
|
||||
src: "synapse/homeserver.yaml.j2"
|
||||
dest: "{{ MATRIX_SYNAPSE_CONFIG_PATH_HOST }}"
|
||||
notify: docker compose up
|
||||
|
||||
- name: add synapse log configuration
|
||||
template:
|
||||
src: "synapse/log.config.j2"
|
||||
dest: "{{ MATRIX_SYNAPSE_LOG_PATH_HOST }}"
|
||||
notify: docker compose up
|
||||
|
||||
# https://github.com/matrix-org/synapse/issues/6303
|
||||
- name: set correct folder permissions
|
||||
command:
|
||||
cmd: "docker run --rm --mount type=volume,src={{ MATRIX_SYNAPSE_VOLUME }},dst=/data -e SYNAPSE_SERVER_NAME={{ MATRIX_SYNAPSE_DOMAIN }} -e SYNAPSE_REPORT_STATS=no --entrypoint /bin/sh matrixdotorg/synapse:latest -c 'chown -vR 991:991 /data'"
|
||||
|
||||
- name: add docker-compose.yml
|
||||
template:
|
||||
src: "docker-compose.yml.j2"
|
||||
dest: "{{ docker_compose.directories.instance }}docker-compose.yml"
|
||||
notify: docker compose up
|
||||
|
||||
# Pull image when update is wished.
|
||||
# @todo This should be moved to update-docker
|
||||
- name: docker compose pull
|
||||
command:
|
||||
cmd: docker-compose -p "{{ MATRIX_PROJECT }}" pull
|
||||
chdir: "{{ docker_compose.directories.instance }}"
|
||||
when: MODE_UPDATE | bool
|
||||
|
||||
- name: docker compose up
|
||||
command:
|
||||
cmd: "docker-compose -p {{ MATRIX_PROJECT }} up -d --remove-orphans"
|
||||
chdir: "{{ docker_compose.directories.instance }}"
|
||||
environment:
|
||||
COMPOSE_HTTP_TIMEOUT: 600
|
||||
DOCKER_CLIENT_TIMEOUT: 600
|
||||
register: result
|
||||
until: result is succeeded
|
||||
retries: 12
|
||||
delay: 30
|
||||
|
||||
- name: wait for registration files
|
||||
wait_for:
|
||||
path: "{{ docker_compose.directories.instance }}mautrix/{{ item.bridge_name }}/registration.yaml"
|
||||
state: present
|
||||
timeout: 120
|
||||
loop: "{{ MATRIX_BRIDGES }}"
|
||||
|
||||
- name: "change file permissions"
|
||||
file:
|
||||
path: "{{ docker_compose.directories.instance }}mautrix/{{ item.bridge_name }}/registration.yaml"
|
||||
mode: "0755"
|
||||
loop: "{{ MATRIX_BRIDGES }}"
|
||||
async: "{{ ASYNC_TIME if ASYNC_ENABLED | bool else omit }}"
|
||||
poll: "{{ ASYNC_POLL if ASYNC_ENABLED | bool else omit }}"
|
||||
|
||||
- name: create admin account
|
||||
command:
|
||||
cmd: docker compose exec -it synapse register_new_matrix_user -u {{applications | get_app_conf(application_id, 'users.administrator.username', True)}} -p {{applications | get_app_conf(application_id, 'credentials.administrator_password', True)}} -a -c {{ MATRIX_SYNAPSE_CONFIG_PATH_CONTAINER }} http://localhost:8008
|
||||
chdir: "{{ docker_compose.directories.instance }}"
|
||||
ignore_errors: true
|
||||
when: applications | get_app_conf(application_id, 'setup', True) | bool
|
||||
async: "{{ ASYNC_TIME if ASYNC_ENABLED | bool else omit }}"
|
||||
poll: "{{ ASYNC_POLL if ASYNC_ENABLED | bool else omit }}"
|
||||
|
||||
- name: create chatgpt bot
|
||||
command:
|
||||
cmd: docker compose exec -it synapse register_new_matrix_user -u chatgptbot -p {{applications | get_app_conf(application_id, 'credentials.chatgpt_bridge_user_password', True)}} -a -c {{ MATRIX_SYNAPSE_CONFIG_PATH_CONTAINER }} http://localhost:8008
|
||||
chdir: "{{ docker_compose.directories.instance }}"
|
||||
ignore_errors: true
|
||||
when: applications | get_app_conf(application_id, 'setup', True) | bool
|
||||
async: "{{ ASYNC_TIME if ASYNC_ENABLED | bool else omit }}"
|
||||
poll: "{{ ASYNC_POLL if ASYNC_ENABLED | bool else omit }}"
|
@@ -6,7 +6,7 @@
|
||||
# - database_password
|
||||
- name: "create {{database_name}} database"
|
||||
include_role:
|
||||
name: svc-db-postgres
|
||||
name: "svc-db-{{ database_type }}"
|
||||
when: applications | get_app_conf(application_id, 'features.central_database', False)
|
||||
|
||||
- name: "include 04_seed-database-to-backup.yml"
|
33
roles/web-app-matrix/tasks/03_webserver.yml
Normal file
33
roles/web-app-matrix/tasks/03_webserver.yml
Normal file
@@ -0,0 +1,33 @@
|
||||
- name: create {{ MATRIX_WELL_KNOWN_DIRECTORY }}
|
||||
file:
|
||||
path: "{{ MATRIX_WELL_KNOWN_DIRECTORY }}"
|
||||
state: directory
|
||||
mode: '0755'
|
||||
|
||||
- name: create {{ MATRIX_WELL_KNOWN_FILE }}
|
||||
template:
|
||||
src: "well-known.j2"
|
||||
dest: "{{ MATRIX_WELL_KNOWN_FILE }}"
|
||||
|
||||
- name: "include role srv-proxy-6-6-domain for {{ MATRIX_ELEMENT_DOMAIN }}"
|
||||
include_role:
|
||||
name: srv-proxy-6-6-domain
|
||||
vars:
|
||||
domain: "{{ MATRIX_ELEMENT_DOMAIN }}"
|
||||
http_port: "{{ MATRIX_ELEMENT_PORT }}"
|
||||
|
||||
- name: "include role for {{ application_id }} to receive certs & do modification routines for {{ MATRIX_SYNAPSE_DOMAIN }}"
|
||||
include_role:
|
||||
name: srv-web-7-6-composer
|
||||
vars:
|
||||
domain: "{{ MATRIX_SYNAPSE_DOMAIN }}"
|
||||
http_port: "{{ MATRIX_SYNAPSE_PORT }}"
|
||||
|
||||
- name: create {{ MATRIX_SYNAPSE_DOMAIN }}.conf
|
||||
template:
|
||||
src: "templates/nginx.conf.j2"
|
||||
dest: "{{ NGINX.DIRECTORIES.HTTP.SERVERS }}{{ MATRIX_SYNAPSE_DOMAIN }}.conf"
|
||||
vars:
|
||||
domain: "{{ MATRIX_SYNAPSE_DOMAIN }}" # Didn't work in the past. May it works now. This does not seem to work @todo Check how to solve without declaring set_fact, seems a bug at templates
|
||||
http_port: "{{ MATRIX_SYNAPSE_PORT }}"
|
||||
notify: restart openresty
|
@@ -5,154 +5,13 @@
|
||||
|
||||
- name: Filter enabled bridges and register as fact
|
||||
set_fact:
|
||||
bridges: "{{ bridges_configuration | filter_enabled_bridges(applications | get_app_conf(application_id, 'plugins', True)) }}"
|
||||
MATRIX_BRIDGES: "{{ bridges_configuration | filter_enabled_bridges(applications | get_app_conf(application_id, 'plugins', True)) }}"
|
||||
changed_when: false
|
||||
|
||||
- name: "include role for {{application_id}} to receive certs & do modification routines"
|
||||
include_role:
|
||||
name: srv-web-7-6-composer
|
||||
vars:
|
||||
domain: "{{domains[application_id].synapse}}"
|
||||
http_port: "{{ports.localhost.http['web-app-matrix_synapse']}}"
|
||||
# Order of the following tasks is important otherwise handlers are flushed wrongly
|
||||
|
||||
- name: "load docker and db for {{application_id}}"
|
||||
include_role:
|
||||
name: cmp-db-docker
|
||||
vars:
|
||||
docker_compose_flush_handlers: false
|
||||
- name: "Include Docker Tasks for '{{ application_id }}'"
|
||||
include_tasks: 01_docker.yml
|
||||
|
||||
- name: create {{well_known_directory}}
|
||||
file:
|
||||
path: "{{well_known_directory}}"
|
||||
state: directory
|
||||
mode: '0755'
|
||||
|
||||
- name: create {{well_known_directory}}server
|
||||
template:
|
||||
src: "well-known.j2"
|
||||
dest: "{{well_known_directory}}server"
|
||||
|
||||
- name: create {{domains[application_id].synapse}}.conf
|
||||
template:
|
||||
src: "templates/nginx.conf.j2"
|
||||
dest: "{{nginx.directories.http.servers}}{{domains[application_id].synapse}}.conf"
|
||||
vars:
|
||||
domain: "{{domains[application_id].synapse}}" # Didn't work in the past. May it works now. This does not seem to work @todo Check how to solve without declaring set_fact, seems a bug at templates
|
||||
http_port: "{{ports.localhost.http['web-app-matrix_synapse']}}"
|
||||
notify: restart openresty
|
||||
|
||||
- name: "include role srv-proxy-6-6-domain for {{application_id}}"
|
||||
include_role:
|
||||
name: srv-proxy-6-6-domain
|
||||
vars:
|
||||
domain: "{{domains[application_id].element}}"
|
||||
http_port: "{{ports.localhost.http['web-app-matrix_element']}}"
|
||||
|
||||
- name: include create-and-seed-database.yml for multiple bridges
|
||||
include_tasks: create-and-seed-database.yml
|
||||
vars:
|
||||
database_password: "{{ item.database_password }}"
|
||||
database_username: "{{ item.database_username }}"
|
||||
database_name: "{{ item.database_name }}"
|
||||
loop: "{{ bridges }}"
|
||||
|
||||
# The following taks are necessary because a clean setup is necessary
|
||||
- name: shut down docker compose project
|
||||
command:
|
||||
cmd: docker-compose -p "{{ matrix_project }}" down
|
||||
chdir: "{{ docker_compose.directories.instance }}"
|
||||
|
||||
- name: "cleanup project folder"
|
||||
file:
|
||||
path: "{{docker_compose.directories.instance}}mautrix/"
|
||||
state: absent
|
||||
|
||||
- name: "create bridge folders"
|
||||
file:
|
||||
path: "{{docker_compose.directories.instance}}mautrix/{{item.bridge_name}}"
|
||||
state: directory
|
||||
mode: "0755"
|
||||
loop: "{{ bridges }}"
|
||||
|
||||
- name: add multiple mautrix bridge configuration
|
||||
template:
|
||||
src: "mautrix/{{item.bridge_name}}.config.yml.j2"
|
||||
dest: "{{docker_compose.directories.instance}}mautrix/{{item.bridge_name}}/config.yaml"
|
||||
loop: "{{ bridges }}"
|
||||
notify: docker compose up
|
||||
|
||||
- name: add element configuration
|
||||
template:
|
||||
src: "element.config.json.j2"
|
||||
dest: "{{docker_compose.directories.instance}}element-config.json"
|
||||
notify: docker compose up
|
||||
|
||||
- name: add synapse homeserver configuration
|
||||
template:
|
||||
src: "synapse/homeserver.yaml.j2"
|
||||
dest: "{{docker_compose.directories.instance}}homeserver.yaml"
|
||||
notify: docker compose up
|
||||
|
||||
- name: add synapse log configuration
|
||||
template:
|
||||
src: "synapse/log.config.j2"
|
||||
dest: "{{docker_compose.directories.instance}}{{domains[application_id].synapse}}.log.config"
|
||||
notify: docker compose up
|
||||
|
||||
# https://github.com/matrix-org/synapse/issues/6303
|
||||
- name: set correct folder permissions
|
||||
command:
|
||||
cmd: "docker run --rm --mount type=volume,src=matrix_synapse_data,dst=/data -e SYNAPSE_SERVER_NAME={{domains[application_id].synapse}} -e SYNAPSE_REPORT_STATS=no --entrypoint /bin/sh matrixdotorg/synapse:latest -c 'chown -vR 991:991 /data'"
|
||||
|
||||
- name: add docker-compose.yml
|
||||
template:
|
||||
src: "docker-compose.yml.j2"
|
||||
dest: "{{docker_compose.directories.instance}}docker-compose.yml"
|
||||
notify: docker compose up
|
||||
|
||||
# Pull image when update is wished.
|
||||
# @todo This should be moved to update-docker
|
||||
- name: docker compose pull
|
||||
command:
|
||||
cmd: docker-compose -p "{{ matrix_project }}" pull
|
||||
chdir: "{{docker_compose.directories.instance}}"
|
||||
when: MODE_UPDATE | bool
|
||||
|
||||
- name: docker compose up
|
||||
command:
|
||||
cmd: "docker-compose -p {{ matrix_project }} up -d --remove-orphans"
|
||||
chdir: "{{docker_compose.directories.instance}}"
|
||||
environment:
|
||||
COMPOSE_HTTP_TIMEOUT: 600
|
||||
DOCKER_CLIENT_TIMEOUT: 600
|
||||
register: result
|
||||
until: result is succeeded
|
||||
retries: 12
|
||||
delay: 30
|
||||
|
||||
- name: wait for registration files
|
||||
wait_for:
|
||||
path: "{{docker_compose.directories.instance}}mautrix/{{item.bridge_name}}/registration.yaml"
|
||||
state: present
|
||||
timeout: 120
|
||||
loop: "{{ bridges }}"
|
||||
|
||||
- name: "change file permissions"
|
||||
file:
|
||||
path: "{{docker_compose.directories.instance}}mautrix/{{item.bridge_name}}/registration.yaml"
|
||||
mode: "0755"
|
||||
loop: "{{ bridges }}"
|
||||
|
||||
- name: create admin account
|
||||
command:
|
||||
cmd: docker compose exec -it synapse register_new_matrix_user -u {{applications | get_app_conf(application_id, 'users.administrator.username', True)}} -p {{applications | get_app_conf(application_id, 'credentials.administrator_password', True)}} -a -c /data/homeserver.yaml http://localhost:8008
|
||||
chdir: "{{ docker_compose.directories.instance }}"
|
||||
ignore_errors: true
|
||||
when: applications | get_app_conf(application_id, 'setup', True) | bool
|
||||
|
||||
- name: create chatgpt bot
|
||||
command:
|
||||
cmd: docker compose exec -it synapse register_new_matrix_user -u chatgptbot -p {{applications | get_app_conf(application_id, 'credentials.chatgpt_bridge_user_password', True)}} -a -c /data/homeserver.yaml http://localhost:8008
|
||||
chdir: "{{ docker_compose.directories.instance }}"
|
||||
ignore_errors: true
|
||||
when: applications | get_app_conf(application_id, 'setup', True) | bool
|
||||
- name: "Include Webserver Tasks for '{{ application_id }}'"
|
||||
include_tasks: 03_webserver.yml
|
Reference in New Issue
Block a user