documentation for ansible deployment

This commit is contained in:
Jerry Kwok 2024-11-06 09:07:15 -05:00
parent 3fd562c144
commit e08d1477ec
3 changed files with 120 additions and 1 deletions

40
ansible/README.md Normal file
View file

@ -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.

View file

@ -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 }}"

View file

@ -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