commit 3e9e51363369593b6f10d6f8ef4b88936389f9b7 Author: Olivier Navas Date: Sun Aug 28 21:00:48 2022 +0200 Commit initial diff --git a/README.md b/README.md new file mode 100644 index 0000000..87220da --- /dev/null +++ b/README.md @@ -0,0 +1,35 @@ +# Role : docker_jitsimeet + +## Services fournis + +- main.yml : Installation de jitsimeet sur un serveur docker_host + +## Variables + +Fournir les variables suivantes. Par exemple : + +```yaml +docker_jitsimeet_fqdn: jitsimeet.example.com +docker_jitsimeet_version: stable-7648-4 +docker_jitsimeet_data_dir: /data1 +docker_jitsimeet_service_id: jitsimeet + +docker_jitsimeet_jicofo_auth_password: "coller_ici_jicofo_auth_password" +docker_jitsimeet_jvb_auth_password: "coller_ici_jvb_auth_password" +docker_jitsimeet_jvb_host_address: 10.11.12.13 + +docker_jitsimeet_etherpad_public_url: https://pad.libretic.fr +``` + +| Option | Valeur par défaut | Description | +|---------------------------------------|-------------------|--------------------------------------------------------------------------------------------| +| docker_jitsimeet_fqdn | | Le fqdn pour accéder à jitsimeet | +| docker_jitsimeet_version | | Version de l'image jitsimeet | +| docker_jitsimeet_data_dir | | L'emplacement dans lequel se trouvent les volumes de donnees docker pour le service | +| docker_jitsimeet_service_id | | Le nom de service souhaité : conditionne le nommage des dossiers et le routage par traefik | +| docker_jitsimeet_jicofo_auth_password | | Mdp de jicofo ; générer avec `openssl rand -hex 16` | +| docker_jitsimeet_jvb_auth_password | | Mdp de jvb ; générer avec `openssl rand -hex 16` | +| docker_jitsimeet_jvb_host_address | | Adresse du serveur docker sur lequel écoute le service jvb | +| docker_jitsimeet_etherpad_public_url | | Si précisé, indique à Jitsi un serveur sur lequel partager un document par réunion | + + diff --git a/defaults/main.yml b/defaults/main.yml new file mode 100644 index 0000000..e69de29 diff --git a/handlers/main.yml b/handlers/main.yml new file mode 100644 index 0000000..4a7c0ed --- /dev/null +++ b/handlers/main.yml @@ -0,0 +1,5 @@ +- name: docker-compose-up + shell: | + docker-compose up -d + args: + chdir: /opt/{{ docker_jitsimeet_service_id }}/ diff --git a/meta/main.yml b/meta/main.yml new file mode 100644 index 0000000..71c8fc9 --- /dev/null +++ b/meta/main.yml @@ -0,0 +1,8 @@ +galaxy_info: + author: Olivier Navas + description: Modèle d'installation Libretic pour jitsimeet + 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..1d82321 --- /dev/null +++ b/tasks/main.yml @@ -0,0 +1,17 @@ +- name: docker directory + file: + path: /opt/{{ docker_jitsimeet_service_id }}/ + state: directory + +- name: prepare docker-compose.yml + template: + src: "{{ item }}" + dest: /opt/{{ docker_jitsimeet_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..236e419 --- /dev/null +++ b/templates/docker-compose.yml @@ -0,0 +1,86 @@ +# {{ ansible_managed }} +version: '3.5' + +services: + # Frontend + web: + image: jitsi/web:{{ docker_jitsimeet_version }} + restart: always + volumes: + - {{ docker_jitsimeet_data_dir }}/{{ docker_jitsimeet_service_id }}/web:/config + - {{ docker_jitsimeet_data_dir }}/{{ docker_jitsimeet_service_id }}/web/crontabs:/var/spool/cron/crontabs + - {{ docker_jitsimeet_data_dir }}/{{ docker_jitsimeet_service_id }}/transcripts:/usr/share/jitsi-meet/transcripts + environment: + - PUBLIC_URL=https://{{ docker_jitsimeet_fqdn }} + - JICOFO_AUTH_PASSWORD={{ docker_jitsimeet_jicofo_auth_password }} +{% if docker_jitsimeet_etherpad_public_url is defined %} + - ETHERPAD_PUBLIC_URL={{ docker_jitsimeet_etherpad_public_url }} +{% endif %} + labels: + - "traefik.enable=true" + - "traefik.docker.network=traefik" + - "traefik.http.routers.{{ docker_jitsimeet_service_id }}.entrypoints=web" + - "traefik.http.routers.{{ docker_jitsimeet_service_id }}.rule=Host(`{{ docker_jitsimeet_fqdn }}`)" + - "traefik.http.services.{{ docker_jitsimeet_service_id }}.loadbalancer.server.port=80" + networks: + - jitsimeet + - traefik + + # XMPP server + prosody: + image: jitsi/prosody:{{ docker_jitsimeet_version }} + restart: always + expose: + - '5222' + - '5347' + - '5280' + volumes: + - {{ docker_jitsimeet_data_dir }}/{{ docker_jitsimeet_service_id }}/prosody/config:/config + - {{ docker_jitsimeet_data_dir }}/{{ docker_jitsimeet_service_id }}/prosody/prosody-plugins-custom:/prosody-plugins-custom + environment: + - PUBLIC_URL=https://{{ docker_jitsimeet_fqdn }} + - JICOFO_AUTH_PASSWORD={{ docker_jitsimeet_jicofo_auth_password }} + - JVB_AUTH_PASSWORD={{ docker_jitsimeet_jvb_auth_password }} + networks: + jitsimeet: + aliases: + - xmpp.meet.jitsi + + # Focus component + jicofo: + image: jitsi/jicofo:{{ docker_jitsimeet_version }} + restart: always + volumes: + - {{ docker_jitsimeet_data_dir }}/{{ docker_jitsimeet_service_id }}/jicofo:/config + environment: + - JICOFO_AUTH_PASSWORD={{ docker_jitsimeet_jicofo_auth_password }} + depends_on: + - prosody + networks: + - jitsimeet + + # Video bridge + jvb: + image: jitsi/jvb:{{ docker_jitsimeet_version }} + restart: always + ports: + - '10000:10000/udp' + - '127.0.0.1:8080:8080' + volumes: + - {{ docker_jitsimeet_data_dir }}/{{ docker_jitsimeet_service_id }}/jvb:/config + environment: + - PUBLIC_URL=https://{{ docker_jitsimeet_fqdn }} + - DOCKER_HOST_ADDRESS={{ docker_jitsimeet_jvb_host_address }} + - JVB_AUTH_PASSWORD={{ docker_jitsimeet_jvb_auth_password }} + depends_on: + - prosody + networks: + - jitsimeet + - jitsivideo + +networks: + traefik: + external: true + jitsimeet: + internal: true + jitsivideo: