summaryrefslogtreecommitdiff
path: root/roles/apps/collabora/code/instance/tasks
diff options
context:
space:
mode:
authorChristian Pointner <equinox@spreadspace.org>2024-08-25 23:03:52 +0200
committerChristian Pointner <equinox@spreadspace.org>2024-08-25 23:03:52 +0200
commitfa5bacba97c0c9513dcdbb24b5464157184c4ee1 (patch)
tree3681bf971131faae1a4a0e9bc515e3df12e055d6 /roles/apps/collabora/code/instance/tasks
parentcollabora/code: remove legacy file naming (lool vs cool) (diff)
collabora/code: move to new-style app layout and generic storage config
Diffstat (limited to 'roles/apps/collabora/code/instance/tasks')
-rw-r--r--roles/apps/collabora/code/instance/tasks/custom-image.yml24
-rw-r--r--roles/apps/collabora/code/instance/tasks/main.yml54
2 files changed, 78 insertions, 0 deletions
diff --git a/roles/apps/collabora/code/instance/tasks/custom-image.yml b/roles/apps/collabora/code/instance/tasks/custom-image.yml
new file mode 100644
index 00000000..212fff36
--- /dev/null
+++ b/roles/apps/collabora/code/instance/tasks/custom-image.yml
@@ -0,0 +1,24 @@
+---
+- name: create build directory for custom image
+ file:
+ path: "{{ collabora_code_instance_basepath }}/build"
+ state: directory
+
+- name: generate Dockerfile for custom image
+ copy:
+ content: |
+ FROM {{ collabora_code_instances[collabora_code_instance].custom_image.from | default('collabora/code:' + collabora_code_instances[collabora_code_instance].version) }}
+ {{ collabora_code_instances[collabora_code_instance].custom_image.dockerfile }}
+ dest: "{{ collabora_code_instance_basepath }}/build/Dockerfile"
+ register: collabora_code_custom_image_docker
+
+- name: build custom image
+ docker_image:
+ name: "collabora/code/{{ collabora_code_instance }}:{{ collabora_code_instances[collabora_code_instance].version }}"
+ state: present
+ force_source: "{{ collabora_code_custom_image_docker is changed }}"
+ source: build
+ build:
+ path: "{{ collabora_code_instance_basepath }}/build"
+ network: host
+ pull: yes
diff --git a/roles/apps/collabora/code/instance/tasks/main.yml b/roles/apps/collabora/code/instance/tasks/main.yml
new file mode 100644
index 00000000..eed473a0
--- /dev/null
+++ b/roles/apps/collabora/code/instance/tasks/main.yml
@@ -0,0 +1,54 @@
+---
+- name: prepare storage volume
+ vars:
+ storage_volume: "{{ collabora_code_instances[collabora_code_instance].storage }}"
+ include_role:
+ name: "storage/{{ collabora_code_instances[collabora_code_instance].storage.type }}/volume"
+
+- set_fact:
+ collabora_code_instance_basepath: "{{ storage_volume_mountpoint }}"
+
+- name: create instance config directory
+ file:
+ path: "{{ collabora_code_instance_basepath }}/config"
+ state: directory
+ mode: 0750
+
+- name: generate configuration file
+ template:
+ src: "config/coolwsd.{{ collabora_code_instances[collabora_code_instance].version }}.xml.j2"
+ dest: "{{ collabora_code_instance_basepath }}/config/coolwsd.xml"
+
+- name: build custom image
+ when: "'custom_image' in collabora_code_instances[collabora_code_instance]"
+ include_tasks: custom-image.yml
+
+- name: install pod manifest
+ vars:
+ kubernetes_standalone_pod:
+ name: "collabora-code-{{ collabora_code_instance }}"
+ spec: "{{ lookup('template', 'pod-spec.yml.j2') }}"
+ mode: "0600"
+ config_hash_items:
+ - path: "{{ collabora_code_instance_basepath }}/config/coolwsd.xml"
+ properties:
+ - checksum
+ include_role:
+ name: kubernetes/standalone/pod
+
+- name: render nginx-vhost custom config
+ set_fact:
+ collabora_code_nginx_vhost_custom: "{{ lookup('template', 'nginx-vhost.conf.j2') }}"
+
+- name: configure nginx vhost
+ vars:
+ nginx_vhost:
+ name: "collabora-code-{{ collabora_code_instance }}"
+ template: generic
+ tls:
+ certificate_provider: "{{ acme_client }}"
+ hostnames:
+ - "{{ collabora_code_instances[collabora_code_instance].hostname }}"
+ custom: "{{ collabora_code_nginx_vhost_custom }}"
+ include_role:
+ name: nginx/vhost