From 84940b7509502baa57a97e659014bae986a9e40b Mon Sep 17 00:00:00 2001 From: Olivier Navas Date: Fri, 5 Aug 2022 15:29:05 +0200 Subject: [PATCH] Commit initial --- README.md | 42 ++++++++++++++++++++++++++++++++ defaults/main.yml | 0 handlers/main.yml | 5 ++++ tasks/main.yml | 15 ++++++++++++ templates/docker-compose.yml | 46 ++++++++++++++++++++++++++++++++++++ templates/php.ini | 2 ++ 6 files changed, 110 insertions(+) create mode 100644 README.md create mode 100644 defaults/main.yml create mode 100644 handlers/main.yml create mode 100644 tasks/main.yml create mode 100644 templates/docker-compose.yml create mode 100644 templates/php.ini diff --git a/README.md b/README.md new file mode 100644 index 0000000..2fc108d --- /dev/null +++ b/README.md @@ -0,0 +1,42 @@ +# Role : docker_nextcloud + +## Services fournis + +- main.yml : Installation de nextcloud sur un serveur docker_host + +## Variables + +Fournir les variables suivantes. Par exemple : + +```yaml +docker_nextcloud_fqdn: nextcloud.example.com +docker_nextcloud_version: 23.0.3-apache +docker_nextcloud_data_dir: /data1 +docker_nextcloud_service_id: nextcloud +docker_nextcloud_db: nextcloud +docker_nextcloud_db_user: nextcloud +docker_nextcloud_db_password: motdepassebdd +docker_nextcloud_smtp_host: smtp.example.com +docker_nextcloud_php_ini: + php_upload_max_filesize = 512M + php_post_max_size = 512M + php_max_execution_time = 200 + php_memory_limit = 1024M +``` + +| Option | Valeur par défaut | Description | +|------------------------------|-------------------|--------------------------------------------------------------------------------------------| +| docker_nextcloud_fqdn | | Le fqdn pour accéder à nextcloud | +| docker_nextcloud_version | | Version de l'image nextcloud | +| docker_nextcloud_data_dir | | L'emplacement dans lequel se trouvent les volumes de donnees docker pour le service | +| docker_nextcloud_service_id | | Le nom de service souhaité : conditionne le nommage des dossiers et le routage par traefik | +| docker_nextcloud_db | | Le nom de la base de données | +| docker_nextcloud_db_user | | Le nom du user propriétaire de la base de données | +| docker_nextcloud_db_password | | Le mot de passe du user propriétaire de la base de données | +| docker_nextcloud_smtp_host | | FQDN du serveur smtp pour l'envoi de mails par nextcloud | +| docker_nextcloud_php_ini | | Une liste de variables d'environnement pour la configuration de healtchecks | + + +## Configuration de nextcloud + +A compléter 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..d5e5090 --- /dev/null +++ b/handlers/main.yml @@ -0,0 +1,5 @@ +- name: docker-compose-up + shell: | + docker-compose up -d + args: + chdir: /opt/{{ docker_nextcloud_service_id }}/ diff --git a/tasks/main.yml b/tasks/main.yml new file mode 100644 index 0000000..f0d2278 --- /dev/null +++ b/tasks/main.yml @@ -0,0 +1,15 @@ +- name: docker directory + file: + path: /opt/{{ docker_nextcloud_service_id }}/ + state: directory + +- name: prepare docker-compose.yml + template: + src: "{{ item }}" + dest: /opt/{{ docker_nextcloud_service_id }}/ + with_items: + - docker-compose.yml + - php.ini + notify: docker-compose-up + + diff --git a/templates/docker-compose.yml b/templates/docker-compose.yml new file mode 100644 index 0000000..c8f598a --- /dev/null +++ b/templates/docker-compose.yml @@ -0,0 +1,46 @@ +# {{ ansible_managed }} +version: '3.1' + +services: + nextcloud: + image: nextcloud:{{ docker_nextcloud_version }} + volumes: + - {{ docker_nextcloud_data_dir }}/{{ docker_nextcloud_service_id }}/nextcloud:/var/www/html + - ./php.ini:/usr/local/etc/php/php.ini + restart: always + depends_on: + - db + labels: + - "traefik.enable=true" + - "traefik.docker.network=traefik" + - "traefik.http.routers.{{ docker_nextcloud_service_id }}.entrypoints=web" + - "traefik.http.routers.{{ docker_nextcloud_service_id }}.rule=Host(`{{ docker_nextcloud_fqdn }}`)" + - "traefik.http.services.{{ docker_nextcloud_service_id }}.loadbalancer.server.port=80" + networks: + - nextcloud + - traefik + environment: + - POSTGRES_HOST=db + - POSTGRES_DB={{ docker_nextcloud_db }} + - POSTGRES_USER={{ docker_nextcloud_db_user }} + - POSTGRES_PASSWORD={{ docker_nextcloud_db_password }} + - SMTP_HOST={{ docker_nextcloud_smtp_host }} + + db: + image: postgres:13 + restart: always + volumes: + - {{ docker_nextcloud_data_dir }}/{{ docker_nextcloud_service_id }}/db:/var/lib/postgresql/data + environment: + - POSTGRES_DB={{ docker_nextcloud_db }} + - POSTGRES_USER={{ docker_nextcloud_db_user }} + - POSTGRES_PASSWORD={{ docker_nextcloud_db_password }} + networks: + - nextcloud + + +networks: + traefik: + external: true + nextcloud: + internal: true diff --git a/templates/php.ini b/templates/php.ini new file mode 100644 index 0000000..e0bef51 --- /dev/null +++ b/templates/php.ini @@ -0,0 +1,2 @@ +# {{ ansible_managed }} +{{ docker_nextcloud_php_ini }}