From 83cec2905c2f74d8000caf64d9c6cdaa41e2f7b3 Mon Sep 17 00:00:00 2001 From: Joschka Seydell Date: Thu, 26 Nov 2020 12:54:39 -0800 Subject: [PATCH 1/2] Consolidated variable names and introduced install path. --- README.md | 15 ++++++++------- defaults/main.yml | 3 ++- tasks/main.yml | 24 ++++++++++++------------ 3 files changed, 22 insertions(+), 20 deletions(-) diff --git a/README.md b/README.md index 9df87fb..97fe1c8 100644 --- a/README.md +++ b/README.md @@ -26,13 +26,14 @@ Requirements Role Variables -------------- -| Variable | Description | Default | -| --------------------------- | ------------------------------------------------------------------------------- | ------------------ | -| docker_user | The user who is going to manage/run the Docker Compose services | deploy | -| collabora_virtual_host | The host under which CODE is available from the outside (e.g. collabora.example.org) | localhost | -| collabora_domain_regex_pattern | A regular expression to match hosts that should be allowed to access CODE | localhost | -| collabora_admin_user | Used to access to the Admin UI: https:///loleaflet/dist/admin/admin.html | | -| collabora_admin_password | | | +| Variable | Description | Default | +| --------------------------- | ------------------------------------------------------------------------------- | ------------------ | +| collabora_install_user | The user who is going to manage/run the Docker Compose services | {{ ansible_user }} | +| collabora_install_path | The location where the service should be deployed | /home/{{ collabora_install_user }} | +| collabora_virtual_host | The host under which CODE is available from the outside (e.g. collabora.example.org) | localhost | +| collabora_domain_regex_pattern | A regular expression to match hosts that should be allowed to access CODE | localhost | +| collabora_admin_user | Used to access to the Admin UI: https:///loleaflet/dist/admin/admin.html | | +| collabora_admin_password | | | Dependencies ------------ diff --git a/defaults/main.yml b/defaults/main.yml index db7156e..cf8f6fe 100644 --- a/defaults/main.yml +++ b/defaults/main.yml @@ -1,6 +1,7 @@ --- # defaults file for Collabora Online -docker_user: deploy +collabora_install_user: '{{ ansible_user }}' # This user must be present on the host +collabora_install_path: '/home/{{ collabora_install_user }}' collabora_exposed_port: 9980 collabora_virtual_host: localhost collabora_public_url: http://{{ collabora_virtual_host }} diff --git a/tasks/main.yml b/tasks/main.yml index 2b5fe7a..e3c1664 100644 --- a/tasks/main.yml +++ b/tasks/main.yml @@ -2,23 +2,23 @@ # tasks file for Collabora Online - name: Ensure Collabora Online config directory exists file: - path: /home/{{ docker_user }}/collabora-online + path: "{{ collabora_install_path }}/collabora-online" state: directory - owner: '{{ docker_user }}' - group: '{{ docker_user }}' + owner: '{{ collabora_install_user }}' + group: '{{ collabora_install_user }}' tags: config - name: Provide docker-compose.yml template: src: templates/docker-compose.collabora-online.yml.j2 - dest: /home/{{ docker_user }}/collabora-online/docker-compose.yml - owner: "{{ docker_user }}" - group: "{{ docker_user }}" + dest: "{{ collabora_install_path }}/collabora-online/docker-compose.yml" + owner: "{{ collabora_install_user }}" + group: "{{ collabora_install_user }}" mode: '0644' tags: config - name: Output docker-compose.yml - shell: cat /home/{{ docker_user }}/collabora-online/docker-compose.yml + shell: cat {{ collabora_install_path }}/collabora-online/docker-compose.yml register: output tags: config @@ -28,21 +28,21 @@ - name: Provide Collabora env vars template: src: templates/env.collabora-online.j2 - dest: /home/{{ docker_user }}/collabora-online/.env - owner: "{{ docker_user }}" - group: "{{ docker_user }}" + dest: "{{ collabora_install_path }}/collabora-online/.env" + owner: "{{ collabora_install_user }}" + group: "{{ collabora_install_user }}" mode: '0640' tags: config - name: "docker-compose: Teardown existing Collabora service" docker_compose: - project_src: "/home/{{ docker_user }}/collabora-online/" + project_src: "{{ collabora_install_path }}/collabora-online/" state: absent tags: ['never', 'teardown'] - name: "docker-compose: Bootstrap Collabora service" docker_compose: - project_src: "/home/{{ docker_user }}/collabora-online/" + project_src: "{{ collabora_install_path }}/collabora-online/" register: output - debug: From 40049b2e3e3125c4caed9def6d8f7598acc81000 Mon Sep 17 00:00:00 2001 From: Joschka Seydell Date: Mon, 30 Nov 2020 13:34:36 -0800 Subject: [PATCH 2/2] Adjusted variables and docker-compose file to account for multitenancy setups. --- README.md | 2 ++ defaults/main.yml | 3 +++ templates/docker-compose.collabora-online.yml.j2 | 12 +++++++----- 3 files changed, 12 insertions(+), 5 deletions(-) diff --git a/README.md b/README.md index 97fe1c8..ac2052d 100644 --- a/README.md +++ b/README.md @@ -30,7 +30,9 @@ Role Variables | --------------------------- | ------------------------------------------------------------------------------- | ------------------ | | collabora_install_user | The user who is going to manage/run the Docker Compose services | {{ ansible_user }} | | collabora_install_path | The location where the service should be deployed | /home/{{ collabora_install_user }} | +| collabora_multitenant_label | A label (unique accross all instances on this host) identifying the tenant | | | collabora_virtual_host | The host under which CODE is available from the outside (e.g. collabora.example.org) | localhost | +| collabora_exposed_port | The port under which the Collabora instance is available | 9980 | | collabora_domain_regex_pattern | A regular expression to match hosts that should be allowed to access CODE | localhost | | collabora_admin_user | Used to access to the Admin UI: https:///loleaflet/dist/admin/admin.html | | | collabora_admin_password | | | diff --git a/defaults/main.yml b/defaults/main.yml index cf8f6fe..68a7838 100644 --- a/defaults/main.yml +++ b/defaults/main.yml @@ -2,7 +2,10 @@ # defaults file for Collabora Online collabora_install_user: '{{ ansible_user }}' # This user must be present on the host collabora_install_path: '/home/{{ collabora_install_user }}' +collabora_multitenant_label: collabora_exposed_port: 9980 collabora_virtual_host: localhost collabora_public_url: http://{{ collabora_virtual_host }} collabora_domain_regex_pattern: localhost +# Internal variables +collabora_multitenant_postfix: "{{ '_' + collabora_multitenant_label if (collabora_multitenant_label) else '' }}" diff --git a/templates/docker-compose.collabora-online.yml.j2 b/templates/docker-compose.collabora-online.yml.j2 index 8e2bfc4..4d15b41 100644 --- a/templates/docker-compose.collabora-online.yml.j2 +++ b/templates/docker-compose.collabora-online.yml.j2 @@ -3,6 +3,8 @@ version: '3' services: collabora: image: collabora/code + container_name: collabora{{ collabora_multitenant_postfix }} + hostname: collabora{{ collabora_multitenant_postfix }} restart: unless-stopped environment: - extra_params @@ -16,11 +18,11 @@ services: labels: - "traefik.enable=true" - "traefik.docker.network=traefik_public" - - "traefik.http.routers.collabora.rule=Host(`{{ collabora_virtual_host }}`)" - - "traefik.port=9980" - - "traefik.http.routers.collabora.entrypoints=websecure" - - "traefik.http.routers.collabora.tls=true" - - "traefik.http.routers.collabora.tls.certresolver=defaultresolver" + - "traefik.http.routers.collabora{{ collabora_multitenant_postfix }}.rule=Host(`{{ collabora_virtual_host }}`)" + - "traefik.port={{ collabora_exposed_port }}" + - "traefik.http.routers.collabora{{ collabora_multitenant_postfix }}.entrypoints=websecure" + - "traefik.http.routers.collabora{{ collabora_multitenant_postfix }}.tls=true" + - "traefik.http.routers.collabora{{ collabora_multitenant_postfix }}.tls.certresolver=defaultresolver" networks: public: cap_add: