diff --git a/README.md b/README.md index 9df87fb..ac2052d 100644 --- a/README.md +++ b/README.md @@ -26,13 +26,16 @@ 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_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 | | | Dependencies ------------ diff --git a/defaults/main.yml b/defaults/main.yml index db7156e..68a7838 100644 --- a/defaults/main.yml +++ b/defaults/main.yml @@ -1,7 +1,11 @@ --- # 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_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/tasks/main.yml b/tasks/main.yml index 4990153..88d5afa 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: diff --git a/templates/docker-compose.collabora-online.yml.j2 b/templates/docker-compose.collabora-online.yml.j2 index f63b7c0..9053903 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 @@ -15,11 +17,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: