commit 5f658f2ef44697b6cb59b5219595842275496f6e Author: Olivier Navas Date: Mon Aug 15 20:00:53 2022 +0200 Commit initial diff --git a/README.md b/README.md new file mode 100644 index 0000000..57f638f --- /dev/null +++ b/README.md @@ -0,0 +1,35 @@ +# Role : docker_element + + +## Services fournis + +Installation d'une instance element sur un serveur docker_host + +## Variables + +Fournir les variables suivantes. Par exemple : + +```yaml +docker_element_fqdn: element.libretic.fr +docker_element_data_dir: /data1 +docker_element_service_id: monsite +docker_element_image_version: v1.11.2 +docker_element_matrix_server_url: https://matrix.libretic.fr +docker_element_terms_link: https://libretic.fr/reglement-interieur +docker_element_terms_text: "Conditions d'utilisation et règlement intérieur" +``` + +| Option | Valeur par défaut | Description | +|-----------------------------------|-------------------|-------------------------------------------------------------------------------------------| +| docker_element_fqdn | | Nom de domaine, ou liste de noms de domaines, pour lequel le service element répond | +| docker_element_data_dir | | L'emplacement dans lequel se trouvent les volumes de donnees docker pour le service | +| docker_element_service_id | | Le nom de service souhaité : conditionne le nommage des volumes et le routage par traefik | +| docker_element_image_version | | Version de element et de l'image docker | +| docker_element_matrix_server_url | | URL du serveur matrix | +| docker_element_terms_link | | URL de consultation des conditions générales | +| docker_element_terms_text | | Texte du lien vers les conditions générales | + + + + + 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..d2d0bf6 --- /dev/null +++ b/handlers/main.yml @@ -0,0 +1,5 @@ +- name: docker-compose-up + shell: | + docker-compose up -d + args: + chdir: /opt/{{ docker_element_service_id }}/ diff --git a/meta/main.yml b/meta/main.yml new file mode 100644 index 0000000..d7bd7db --- /dev/null +++ b/meta/main.yml @@ -0,0 +1,8 @@ +galaxy_info: + author: Olivier Navas + description: Modèle d'installation Libretic pour element + 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..7a493b7 --- /dev/null +++ b/tasks/main.yml @@ -0,0 +1,15 @@ +- name: docker directory + file: + path: /opt/{{ docker_element_service_id }}/ + state: directory + +- name: prepare docker-compose.yml + template: + src: "{{ item }}" + dest: /opt/{{ docker_element_service_id }}/ + with_items: + - docker-compose.yml + - config.json + notify: docker-compose-up + + diff --git a/templates/config.json b/templates/config.json new file mode 100644 index 0000000..6555253 --- /dev/null +++ b/templates/config.json @@ -0,0 +1,26 @@ +{ + "disable_custom_urls": true, + "default_server_config": { + "m.homeserver": { + "base_url": "{{ docker_element_matrix_server_url }}" + }, + "m.identity_server": { + "base_url": "https://vector.im" + } + }, + "brand": "Element", + "bug_report_endpoint_url": "https://element.io/bugreports/submit", + "room_directory": { + "servers": [ + "matrix.org", + "gitter.im", + "libera.chat" + ] + }, + "terms_and_conditions_links": [ + { + "url": "{{ docker_element_terms_link }}", + "text": "{{ docker_element_terms_text }}" + } + ] +} diff --git a/templates/docker-compose.yml b/templates/docker-compose.yml new file mode 100644 index 0000000..5ec7a72 --- /dev/null +++ b/templates/docker-compose.yml @@ -0,0 +1,22 @@ +# {{ ansible_managed }} + +version: '3.1' + +services: + element: + image: vectorim/element-web:{{ docker_element_image_version }} + volumes: + - ./config.json:/app/config.json + restart: always + labels: + - "traefik.enable=true" + - "traefik.docker.network=traefik" + - "traefik.http.routers.{{ docker_element_service_id }}.entrypoints=web" + - "traefik.http.routers.{{ docker_element_service_id }}.rule=Host(`{{ docker_element_fqdn }}`)" + - "traefik.http.services.{{ docker_element_service_id }}.loadbalancer.server.port=80" + networks: + - traefik + +networks: + traefik: + external: true