From e08d1477ec73aad16a947cc83a90e7dd3904f2ef Mon Sep 17 00:00:00 2001 From: Jerry Kwok Date: Wed, 6 Nov 2024 09:07:15 -0500 Subject: [PATCH] documentation for ansible deployment --- ansible/README.md | 40 +++++++++++++++++++++ ansible/deploy.yml | 11 +++++- ansible/docker-compose.yaml | 70 +++++++++++++++++++++++++++++++++++++ 3 files changed, 120 insertions(+), 1 deletion(-) create mode 100644 ansible/README.md create mode 100644 ansible/docker-compose.yaml diff --git a/ansible/README.md b/ansible/README.md new file mode 100644 index 0000000..5b6e78a --- /dev/null +++ b/ansible/README.md @@ -0,0 +1,40 @@ +# Déploiement de Services avec Ansible et Docker Compose + +Ce guide explique comment utiliser Ansible pour configurer et déployer des services Docker avec `docker-compose`. + +## Prérequis + +1. **Ansible** : Assurez-vous qu'Ansible est installé sur votre système. + - [Guide d'installation d'Ansible](https://docs.ansible.com/ansible/latest/installation_guide/intro_installation.html) + +2. **Docker et Docker Compose** : Docker doit être installé et configuré pour fonctionner avec Ansible. + - Installez Docker : [Documentation Docker](https://docs.docker.com/get-docker/) + - Docker Compose est inclus comme plugin Docker dans les versions récentes de Docker. + +3. **WSL (pour Windows)** : Si vous utilisez Windows, assurez-vous d'avoir configuré WSL et un environnement Ubuntu. + +## Structure du projet + +Le fichier `deploy.yml` contient les tâches Ansible nécessaires pour télécharger, configurer, et démarrer les services Docker en utilisant Docker Compose. + +## Installation et de déploiement + +### Lancer le déploiement avec Ansible + +Pour exécuter le playbook Ansible `deploy.yml`, utilisez la commande suivante depuis le répertoire racine du projet : + +`ansible-playbook -i inventory.ini deploy.yml` + +### Vérification du déploiement + +Une fois le playbook exécuté, Ansible télécharge Docker et Docker Compose, télécharge le fichier `docker-compose.yaml`, démarre Docker et lance les conteneurs spécifiés. + +### Configuration et contenu du Playbook (deploy.yml) +Le playbook deploy.yml exécute les étapes suivantes : + +1. Télécharge Docker Compose si ce dernier n'est pas encore présent. +2. Vérifie l'installation de Docker Compose pour s'assurer qu'il est opérationnel. +3. Démarre le service Docker si ce n'est pas déjà le cas. +4. Télécharge le fichier docker-compose.yaml depuis le dépôt Git spécifié. +5. Lance Docker Compose pour déployer les conteneurs définis dans docker-compose.yaml. +6. Vérifie l'état des conteneurs et affiche les conteneurs en cours d'exécution. \ No newline at end of file diff --git a/ansible/deploy.yml b/ansible/deploy.yml index eab4555..c9f7df8 100644 --- a/ansible/deploy.yml +++ b/ansible/deploy.yml @@ -25,5 +25,14 @@ - name: Lancer Docker Compose ansible.builtin.shell: - docker-compose up -d + docker-compose up -d become: true + + - name: Vérification des services Docker + ansible.builtin.command: + cmd: docker ps + register: docker_ps_output + + - name: Afficher l'état des conteneurs Docker + ansible.builtin.debug: + msg: "{{ docker_ps_output.stdout }}" \ No newline at end of file diff --git a/ansible/docker-compose.yaml b/ansible/docker-compose.yaml new file mode 100644 index 0000000..97c112f --- /dev/null +++ b/ansible/docker-compose.yaml @@ -0,0 +1,70 @@ +services: + + frontend: + image: fuhrmanator/evaluetonsavoir-frontend:latest + container_name: frontend + ports: + - "5173:5173" + environment: + VITE_BACKEND_URL: "http://localhost:4400" + # don't define VITE_BACKEND_SOCKET_URL so it will default to window.location.host + # VITE_BACKEND_SOCKET_URL: "" + restart: always + + backend: + image: fuhrmanator/evaluetonsavoir-backend:latest + container_name: backend + ports: + - "3000:3000" + environment: + PORT: 3000 + MONGO_URI: "mongodb://mongo:27017/evaluetonsavoir" + MONGO_DATABASE: evaluetonsavoir + EMAIL_SERVICE: gmail + SENDER_EMAIL: infoevaluetonsavoir@gmail.com + EMAIL_PSW: 'vvml wmfr dkzb vjzb' + JWT_SECRET: haQdgd2jp09qb897GeBZyJetC8ECSpbFJe + FRONTEND_URL: "http://localhost:5173" + depends_on: + - mongo + restart: always + + # Ce conteneur sert de routeur pour assurer le bon fonctionnement de l'application + nginx: + image: fuhrmanator/evaluetonsavoir-routeur:latest + container_name: nginx + ports: + - "80:80" + depends_on: + - backend + - frontend + restart: always + + # Ce conteneur est la base de données principale pour l'application + mongo: + image: mongo + container_name: mongo + ports: + - "27017:27017" + tty: true + volumes: + - mongodb_data:/data/db + restart: always + + # Ce conteneur assure que l'application est à jour en allant chercher s'il y a des mises à jours à chaque heure + watchtower: + image: containrrr/watchtower + container_name: watchtower + volumes: + - /var/run/docker.sock:/var/run/docker.sock + environment: + - TZ=America/Montreal + - WATCHTOWER_CLEANUP=true + - WATCHTOWER_DEBUG=true + - WATCHTOWER_INCLUDE_RESTARTING=true + - WATCHTOWER_SCHEDULE=0 0 5 * * * # At 5 am everyday + restart: always + +volumes: + mongodb_data: + external: false