mirror of
https://github.com/ets-cfuhrman-pfe/EvalueTonSavoir.git
synced 2025-08-11 21:23:54 -04:00
Merge pull request #167 from ets-cfuhrman-pfe/ansible-it3-PFEA2024
Ansible it3 pfea2024
This commit is contained in:
commit
878fd302a4
5 changed files with 167 additions and 0 deletions
10
ansible/Dockerfile
Normal file
10
ansible/Dockerfile
Normal file
|
|
@ -0,0 +1,10 @@
|
|||
FROM python:3.9-slim
|
||||
|
||||
# Installer Ansible
|
||||
RUN pip install ansible
|
||||
|
||||
# Définir le répertoire de travail
|
||||
WORKDIR /ansible
|
||||
|
||||
# Copier les fichiers nécessaires
|
||||
COPY inventory.ini deploy.yml ./
|
||||
40
ansible/README.md
Normal file
40
ansible/README.md
Normal 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.
|
||||
38
ansible/deploy.yml
Normal file
38
ansible/deploy.yml
Normal file
|
|
@ -0,0 +1,38 @@
|
|||
---
|
||||
- name: Déployer des services avec Docker Compose
|
||||
hosts: local
|
||||
tasks:
|
||||
|
||||
- name: Télécharger Docker
|
||||
ansible.builtin.package:
|
||||
name: docker-compose
|
||||
state: present
|
||||
|
||||
- name: Vérifier l'installation de Docker Compose plugin
|
||||
ansible.builtin.command:
|
||||
cmd: docker compose version
|
||||
|
||||
- name: Commencer le service docker
|
||||
ansible.builtin.service:
|
||||
name: docker
|
||||
state: started
|
||||
enabled: yes
|
||||
|
||||
- name: Telecharger le fichier docker-compose
|
||||
ansible.builtin.get_url:
|
||||
url: https://raw.githubusercontent.com/ets-cfuhrman-pfe/EvalueTonSavoir/refs/heads/main/docker-compose.yaml
|
||||
dest: ./docker-compose.yaml
|
||||
|
||||
- name: Lancer Docker Compose
|
||||
ansible.builtin.shell:
|
||||
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 }}"
|
||||
70
ansible/docker-compose.yaml
Normal file
70
ansible/docker-compose.yaml
Normal 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
|
||||
9
ansible/inventory.ini
Normal file
9
ansible/inventory.ini
Normal file
|
|
@ -0,0 +1,9 @@
|
|||
# Spécifier les serveurs où vous souhaitez déployer votre application.
|
||||
# Remplacez votre_ip_serveur par l’adresse IP de votre serveur, et votre_utilisateur_ssh par le nom d’utilisateur SSH.
|
||||
|
||||
# Pour les serveurs
|
||||
# [app_servers]
|
||||
# votre_ip_serveur ansible_user=votre_utilisateur_ssh
|
||||
|
||||
[local]
|
||||
localhost ansible_connection=local ansible_python_interpreter=/usr/bin/python3
|
||||
Loading…
Reference in a new issue