From 9a459bb59237f36a97c5087bd3d00c2923bd4044 Mon Sep 17 00:00:00 2001 From: Olivier Navas Date: Mon, 29 Jan 2024 21:08:36 +0100 Subject: [PATCH] Simplification de l'installation et de l'administration des plugins --- README.md | 34 ++++++++++++++++----------------- defaults/main.yml | 12 +++--------- tasks/main.yml | 37 ++++++++++++++++++++++++++++++++---- templates/docker-compose.yml | 16 ++++++++-------- 4 files changed, 60 insertions(+), 39 deletions(-) diff --git a/README.md b/README.md index 2d64463..798ea81 100644 --- a/README.md +++ b/README.md @@ -4,32 +4,30 @@ - main.yml : Installation de etherpad sur un serveur docker_host -Le serveur etherpad est basé sur une image d'etherpad disponible sur le serveur git.libretic.fr préparée avec les modules ep_comments_page, ep_delete_after_delay, ep_prometheus - ## Variables Fournir les variables suivantes. Par exemple : ```yaml docker_etherpad_fqdn: etherpad.example.com -docker_etherpad_version: 1.8.18 +docker_etherpad_version: etherpad/etherpad:1.9.6 docker_etherpad_data_dir: /data1 docker_etherpad_service_id: etherpad docker_etherpad_db_password: mot_de_passe +docker_etherpad_admin_password: mot_de_passe_admin ``` -| Option | Valeur par défaut | Description | -|------------------------------------|-----------------------|--------------------------------------------------------------------------------------------| -| docker_etherpad_fqdn | | Le fqdn pour accéder à etherpad | -| docker_etherpad_version | | Version de l'image etherpad | -| docker_etherpad_data_dir | | L'emplacement dans lequel se trouvent les volumes de donnees docker pour le service | -| docker_etherpad_service_id | | Le nom de service souhaité : conditionne le nommage des dossiers et le routage par traefik | -| docker_etherpad_db_name | etherpad | Le nom souhaité pour la base de données | -| docker_etherpad_db_user | etherpad | Le nom souhaité pour le proprietaire de la base | -| docker_etherpad_db_password | | Le mot de passe du proprietaire de la base | -| docker_etherpad_default_pad_text | cf. defaults/main.yml | Texte par défaut à l'initialisation d'un bloc notes | -| docker_etherpad_delete_after_delay | cf. defaults/main.yml | Délai avant suppression d'un bloc notes en secondes | -| docker_etherpad_delete_loop | cf. defaults/main.yml | Définir à false pour utiliser un script de suppression externe | -| docker_etherpad_delete_loop_delay | cf. defaults/main.yml | Délai entre deux suppression | -| docker_etherpad_delete_at_start | cf. defaults/main.yml | Supprime des anciens blocs au démarrage d'etherpad | -| docker_etherpad_delete_text | cf. defaults/main.yml | Texte d'un bloc notes supprimé | +| Option | Valeur par défaut | Description | +|-----------------------------------------------|-----------------------|--------------------------------------------------------------------------------------------| +| docker_etherpad_fqdn | | Le fqdn pour accéder à etherpad | +| docker_etherpad_version | | Version de l'image etherpad | +| docker_etherpad_data_dir | | L'emplacement dans lequel se trouvent les volumes de donnees docker pour le service | +| docker_etherpad_service_id | | Le nom de service souhaité : conditionne le nommage des dossiers et le routage par traefik | +| docker_etherpad_db_name | etherpad | Le nom souhaité pour la base de données | +| docker_etherpad_db_user | etherpad | Le nom souhaité pour le proprietaire de la base | +| docker_etherpad_db_password | | Le mot de passe du proprietaire de la base | +| docker_etherpad_admin_password | | Mot de passe d'accès à l'interface d'administration | +| docker_etherpad_data_owner | aucune | Si précisé, donne la propriété des données à cet utilisateur sur l'hote docker | +| docker_etherpad_data_group | aucune | Si précisé, donne la propriété des données à ce groupe sur l'hote docker | +| docker_etherpad_socketio_max_http_buffer_size | 100000 | Ajuste la taille du buffer de réception des requêtes en provenance du navigateur | +| docker_etherpad_default_pad_text | cf. defaults | Le texte d'accueil des nouveaux pads | diff --git a/defaults/main.yml b/defaults/main.yml index 039a320..0417048 100644 --- a/defaults/main.yml +++ b/defaults/main.yml @@ -1,13 +1,7 @@ docker_etherpad_db_name: etherpad docker_etherpad_db_user: etherpad +# Le buffer doit être assez large pour pouvoir sauvegarder settings.json via l'interface admin. +docker_etherpad_socketio_max_http_buffer_size: 100000 + docker_etherpad_default_pad_text: "Bienvenue sur Etherpad !\n\n\nCe bloc-notes est synchronisé à mesure que vous tapez du texte, de sorte que chaque personne qui voit cette page peut lire le même texte. Cela permet d'éditer un document de manière collaborative et naturelle.\n\n\nPour permettre à chaque participant de s'y retrouver, il est préférable d'indiquer son nom et sa couleur à droite.\n\n\nPour vous impliquer dans Etherpad, consultez https:\/\/etherpad.org" - -# 60 jours -docker_etherpad_delete_after_delay: "5184000" - -docker_etherpad_delete_loop: "true" -docker_etherpad_delete_loop_delay: "3600" -docker_etherpad_delete_at_start: "true" - -docker_etherpad_delete_text: "Le contenu de ce bloc notes a été supprimé car il était plus ancien que la durée d'inactivité paramétrée" diff --git a/tasks/main.yml b/tasks/main.yml index 3ac82f6..c72ca00 100644 --- a/tasks/main.yml +++ b/tasks/main.yml @@ -3,6 +3,39 @@ path: /opt/{{ docker_etherpad_service_id }}/ state: directory +- name: plugins directory + file: + path: "{{ docker_etherpad_data_dir }}/{{ docker_etherpad_service_id }}/node_modules" + owner: "{{ docker_etherpad_data_owner | default(omit) }}" + group: "{{ docker_etherpad_data_group | default(omit) }}" + state: directory + +- name: symlink in node_modules + file: + src: "../src" + path: "{{ docker_etherpad_data_dir }}/{{ docker_etherpad_service_id }}/node_modules/ep_etherpad-lite" + state: link + force: yes + follow: no + +- name: settings.json exists + stat: + path: "{{ docker_etherpad_data_dir }}/{{ docker_etherpad_service_id }}/settings.json" + register: _settings + +- name: prepare settings.json + shell: | + docker create --name temporary_etherpad {{ docker_etherpad_version }} + docker cp temporary_etherpad:/opt/etherpad-lite/settings.json {{ docker_etherpad_data_dir }}/{{ docker_etherpad_service_id }}/settings.json + docker rm temporary_etherpad + when: not _settings.stat.exists + +- name: owner of settings.json + file: + path: "{{ docker_etherpad_data_dir }}/{{ docker_etherpad_service_id }}/settings.json" + owner: "{{ docker_etherpad_data_owner | default(omit) }}" + group: "{{ docker_etherpad_data_group | default(omit) }}" + - name: prepare docker-compose.yml template: src: "{{ item }}" @@ -10,8 +43,4 @@ with_items: - docker-compose.yml notify: docker-compose-up - - - - diff --git a/templates/docker-compose.yml b/templates/docker-compose.yml index fca40f2..f4cac50 100644 --- a/templates/docker-compose.yml +++ b/templates/docker-compose.yml @@ -3,7 +3,7 @@ version: '3.5' services: etherpad: - image: git.libretic.fr/libretic/etherpad:{{ docker_etherpad_version }} + image: {{ docker_etherpad_version }} restart: always environment: DB_TYPE: postgres @@ -13,12 +13,11 @@ services: DB_USER: "{{ docker_etherpad_db_user }}" DB_PASS: "{{ docker_etherpad_db_password }}" ADMIN_PASSWORD: "{{ docker_etherpad_admin_password }}" + SOCKETIO_MAX_HTTP_BUFFER_SIZE: "{{ docker_etherpad_socketio_max_http_buffer_size }}" DEFAULT_PAD_TEXT: "{{ docker_etherpad_default_pad_text }}" - DELETE_AFTER_DELAY: "{{ docker_etherpad_delete_after_delay }}" - DELETE_LOOP: "{{ docker_etherpad_delete_loop }}" - DELETE_LOOP_DELAY: "{{ docker_etherpad_delete_loop_delay }}" - DELETE_AT_START: "{{ docker_etherpad_delete_at_start }}" - DELETE_TEXT: "{{ docker_etherpad_delete_text }}" + volumes: + - {{ docker_etherpad_data_dir }}/{{ docker_etherpad_service_id }}/node_modules:/opt/etherpad-lite/node_modules + - {{ docker_etherpad_data_dir }}/{{ docker_etherpad_service_id }}/settings.json:/opt/etherpad-lite/settings.json labels: - "traefik.enable=true" - "traefik.docker.network=traefik" @@ -26,14 +25,15 @@ services: - "traefik.http.routers.{{ docker_etherpad_service_id }}.rule=Host(`{{ docker_etherpad_fqdn }}`)" - "traefik.http.services.{{ docker_etherpad_service_id }}.loadbalancer.server.port=9001" depends_on: - - db + db: + condition: service_healthy networks: - traefik - etherpad db: - restart: always image: postgres:14 + restart: always shm_size: 256mb networks: - etherpad