Simplification de l'installation et de l'administration des plugins

This commit is contained in:
Navas 2024-01-29 21:08:36 +01:00
parent 76afc52f3c
commit 9a459bb592
4 changed files with 60 additions and 39 deletions

View file

@ -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 |

View file

@ -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"

View file

@ -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

View file

@ -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