Merge pull request #167 from ets-cfuhrman-pfe/ansible-it3-PFEA2024

Ansible it3 pfea2024
This commit is contained in:
Gabriel Moisan Matte 2024-11-14 14:22:21 -05:00 committed by GitHub
commit 878fd302a4
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
5 changed files with 167 additions and 0 deletions

10
ansible/Dockerfile Normal file
View 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
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.

38
ansible/deploy.yml Normal file
View 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 }}"

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

9
ansible/inventory.ini Normal file
View file

@ -0,0 +1,9 @@
# Spécifier les serveurs où vous souhaitez déployer votre application.
# Remplacez votre_ip_serveur par ladresse IP de votre serveur, et votre_utilisateur_ssh par le nom dutilisateur 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