Compare commits

...

3 commits

5 changed files with 37 additions and 26 deletions

View file

@ -28,8 +28,11 @@ Role Variables
| Variable | Description | Default | | Variable | Description | Default |
| --------------------------- | ------------------------------------------------------------------------------- | ------------------ | | --------------------------- | ------------------------------------------------------------------------------- | ------------------ |
| docker_user | The user who is going to manage/run the Docker Compose services | deploy | | 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_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_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://<code-server>/loleaflet/dist/admin/admin.html | | | collabora_admin_user | Used to access to the Admin UI: https://<code-server>/loleaflet/dist/admin/admin.html | |
| collabora_admin_password | | | | collabora_admin_password | | |

View file

@ -1,7 +1,11 @@
--- ---
# defaults file for Collabora Online # 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_exposed_port: 9980
collabora_virtual_host: localhost collabora_virtual_host: localhost
collabora_public_url: http://{{ collabora_virtual_host }} collabora_public_url: http://{{ collabora_virtual_host }}
collabora_domain_regex_pattern: localhost collabora_domain_regex_pattern: localhost
# Internal variables
collabora_multitenant_postfix: "{{ '_' + collabora_multitenant_label if (collabora_multitenant_label) else '' }}"

View file

@ -2,23 +2,23 @@
# tasks file for Collabora Online # tasks file for Collabora Online
- name: Ensure Collabora Online config directory exists - name: Ensure Collabora Online config directory exists
file: file:
path: /home/{{ docker_user }}/collabora-online path: "{{ collabora_install_path }}/collabora-online"
state: directory state: directory
owner: '{{ docker_user }}' owner: '{{ collabora_install_user }}'
group: '{{ docker_user }}' group: '{{ collabora_install_user }}'
tags: config tags: config
- name: Provide docker-compose.yml - name: Provide docker-compose.yml
template: template:
src: templates/docker-compose.collabora-online.yml.j2 src: templates/docker-compose.collabora-online.yml.j2
dest: /home/{{ docker_user }}/collabora-online/docker-compose.yml dest: "{{ collabora_install_path }}/collabora-online/docker-compose.yml"
owner: "{{ docker_user }}" owner: "{{ collabora_install_user }}"
group: "{{ docker_user }}" group: "{{ collabora_install_user }}"
mode: '0644' mode: '0644'
tags: config tags: config
- name: Output docker-compose.yml - 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 register: output
tags: config tags: config
@ -28,21 +28,21 @@
- name: Provide Collabora env vars - name: Provide Collabora env vars
template: template:
src: templates/env.collabora-online.j2 src: templates/env.collabora-online.j2
dest: /home/{{ docker_user }}/collabora-online/.env dest: "{{ collabora_install_path }}/collabora-online/.env"
owner: "{{ docker_user }}" owner: "{{ collabora_install_user }}"
group: "{{ docker_user }}" group: "{{ collabora_install_user }}"
mode: '0640' mode: '0640'
tags: config tags: config
- name: "docker-compose: Teardown existing Collabora service" - name: "docker-compose: Teardown existing Collabora service"
docker_compose: docker_compose:
project_src: "/home/{{ docker_user }}/collabora-online/" project_src: "{{ collabora_install_path }}/collabora-online/"
state: absent state: absent
tags: ['never', 'teardown'] tags: ['never', 'teardown']
- name: "docker-compose: Bootstrap Collabora service" - name: "docker-compose: Bootstrap Collabora service"
docker_compose: docker_compose:
project_src: "/home/{{ docker_user }}/collabora-online/" project_src: "{{ collabora_install_path }}/collabora-online/"
register: output register: output
- debug: - debug:
@ -50,7 +50,7 @@
- assert: - assert:
that: that:
- "output.ansible_facts['collabora']['collabora-online_collabora_1'].state.running" - output['services']['collabora']['collabora-online_collabora_1'].state.running
- name: "Test whether Collabora is healthy from the public internet" - name: "Test whether Collabora is healthy from the public internet"
become: false become: false

View file

@ -3,10 +3,13 @@ version: '3'
services: services:
collabora: collabora:
image: collabora/code image: collabora/code
container_name: collabora{{ collabora_multitenant_postfix }}
hostname: collabora{{ collabora_multitenant_postfix }}
restart: unless-stopped restart: unless-stopped
environment: environment:
- extra_params - extra_params
- domain - domain
- aliasgroup1
{% if collabora_admin_user is defined and collabora_admin_password is defined %} {% if collabora_admin_user is defined and collabora_admin_password is defined %}
- username - username
- password - password
@ -15,11 +18,11 @@ services:
labels: labels:
- "traefik.enable=true" - "traefik.enable=true"
- "traefik.docker.network=traefik_public" - "traefik.docker.network=traefik_public"
- "traefik.http.routers.collabora.rule=Host(`{{ collabora_virtual_host }}`)" - "traefik.http.routers.collabora{{ collabora_multitenant_postfix }}.rule=Host(`{{ collabora_virtual_host }}`)"
- "traefik.port=9980" - "traefik.port={{ collabora_exposed_port }}"
- "traefik.http.routers.collabora.entrypoints=websecure" - "traefik.http.routers.collabora{{ collabora_multitenant_postfix }}.entrypoints=websecure"
- "traefik.http.routers.collabora.tls=true" - "traefik.http.routers.collabora{{ collabora_multitenant_postfix }}.tls=true"
- "traefik.http.routers.collabora.tls.certresolver=defaultresolver" - "traefik.http.routers.collabora{{ collabora_multitenant_postfix }}.tls.certresolver=defaultresolver"
networks: networks:
public: public:
cap_add: cap_add:

View file

@ -1,5 +1,6 @@
extra_params=--o:ssl.enable=false --o:ssl.termination=true extra_params=--o:ssl.enable=false --o:ssl.termination=true
domain={{collabora_domain_regex_pattern|replace('\\', '\\\\')}} domain={{collabora_domain_regex_pattern|replace('\\', '\\\\')}}
aliasgroup1={{ collabora_virtual_host }}
{% if collabora_admin_user is defined and collabora_admin_password is defined %} {% if collabora_admin_user is defined and collabora_admin_password is defined %}
username={{ collabora_admin_user }} username={{ collabora_admin_user }}
password={{ collabora_admin_password }} password={{ collabora_admin_password }}