From ce51e31bb950639f2dda6d84f0ffbb1e70cd9137 Mon Sep 17 00:00:00 2001 From: Olivier Navas Date: Sun, 28 Aug 2022 20:53:55 +0200 Subject: [PATCH] Commit initial --- README.md | 35 ++++++++++++++++++++++++ defaults/main.yml | 13 +++++++++ handlers/main.yml | 5 ++++ meta/main.yml | 8 ++++++ tasks/main.yml | 17 ++++++++++++ templates/docker-compose.yml | 53 ++++++++++++++++++++++++++++++++++++ 6 files changed, 131 insertions(+) create mode 100644 README.md create mode 100644 defaults/main.yml create mode 100644 handlers/main.yml create mode 100644 meta/main.yml create mode 100644 tasks/main.yml create mode 100644 templates/docker-compose.yml diff --git a/README.md b/README.md new file mode 100644 index 0000000..2d64463 --- /dev/null +++ b/README.md @@ -0,0 +1,35 @@ +# Role : docker_etherpad + +## Services fournis + +- 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_data_dir: /data1 +docker_etherpad_service_id: etherpad +docker_etherpad_db_password: mot_de_passe +``` + +| 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é | diff --git a/defaults/main.yml b/defaults/main.yml new file mode 100644 index 0000000..039a320 --- /dev/null +++ b/defaults/main.yml @@ -0,0 +1,13 @@ +docker_etherpad_db_name: etherpad +docker_etherpad_db_user: etherpad + +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/handlers/main.yml b/handlers/main.yml new file mode 100644 index 0000000..99d8bc7 --- /dev/null +++ b/handlers/main.yml @@ -0,0 +1,5 @@ +- name: docker-compose-up + shell: | + docker-compose up -d + args: + chdir: /opt/{{ docker_etherpad_service_id }}/ diff --git a/meta/main.yml b/meta/main.yml new file mode 100644 index 0000000..6a4067b --- /dev/null +++ b/meta/main.yml @@ -0,0 +1,8 @@ +galaxy_info: + author: Olivier Navas + description: Modèle d'installation Libretic pour etherpad + license: GPL-3.0-only + min_ansible_version: 2.9 + galaxy_tags: [] + +dependencies: [] diff --git a/tasks/main.yml b/tasks/main.yml new file mode 100644 index 0000000..3ac82f6 --- /dev/null +++ b/tasks/main.yml @@ -0,0 +1,17 @@ +- name: docker directory + file: + path: /opt/{{ docker_etherpad_service_id }}/ + state: directory + +- name: prepare docker-compose.yml + template: + src: "{{ item }}" + dest: /opt/{{ docker_etherpad_service_id }}/ + with_items: + - docker-compose.yml + notify: docker-compose-up + + + + + diff --git a/templates/docker-compose.yml b/templates/docker-compose.yml new file mode 100644 index 0000000..fca40f2 --- /dev/null +++ b/templates/docker-compose.yml @@ -0,0 +1,53 @@ +# {{ ansible_managed }} +version: '3.5' + +services: + etherpad: + image: git.libretic.fr/libretic/etherpad:{{ docker_etherpad_version }} + restart: always + environment: + DB_TYPE: postgres + DB_HOST: db + DB_PORT: 5432 + DB_NAME: "{{ docker_etherpad_db_name }}" + DB_USER: "{{ docker_etherpad_db_user }}" + DB_PASS: "{{ docker_etherpad_db_password }}" + ADMIN_PASSWORD: "{{ docker_etherpad_admin_password }}" + 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 }}" + labels: + - "traefik.enable=true" + - "traefik.docker.network=traefik" + - "traefik.http.routers.{{ docker_etherpad_service_id }}.entrypoints=web" + - "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 + networks: + - traefik + - etherpad + + db: + restart: always + image: postgres:14 + shm_size: 256mb + networks: + - etherpad + healthcheck: + test: ['CMD', 'pg_isready', '-U', 'postgres'] + volumes: + - {{ docker_etherpad_data_dir }}/{{ docker_etherpad_service_id }}/db_data:/var/lib/postgresql/data + environment: + POSTGRES_DB: "{{ docker_etherpad_db_name }}" + POSTGRES_USER: "{{ docker_etherpad_db_user }}" + POSTGRES_PASSWORD: "{{ docker_etherpad_db_password }}" + +networks: + traefik: + external: true + etherpad: + internal: true