8.8 KiB
📘 Guide d'Exécution - Déploiement Ansible
🎯 Objectif
Ce guide vous accompagne pas à pas dans l'exécution du playbook Ansible pour déployer DockeZR sur votre serveur.
📝 Checklist Pré-Déploiement
Avant de commencer, assurez-vous d'avoir:
- Un serveur Linux accessible (Ubuntu 20.04+ recommandé)
- L'adresse IP de votre serveur
- Un accès SSH avec la clé privée
ssh-key-2025-10-16.key - Un utilisateur avec droits sudo sur le serveur
- Ansible installé sur votre machine locale
- Modifié le fichier
inventory.iniavec vos informations - Configuré les variables dans
group_vars/all.yml - Changé les mots de passe par défaut
🔧 Configuration Étape par Étape
Étape 1: Installer Ansible (sur Windows via WSL)
# Ouvrir PowerShell en administrateur
wsl --install
# Redémarrer l'ordinateur si nécessaire
# Ouvrir Ubuntu WSL
# Mettre à jour et installer Ansible
sudo apt update
sudo apt install ansible git -y
# Vérifier l'installation
ansible --version
Étape 2: Naviguer vers le dossier Ansible
# Dans WSL, aller dans le projet
cd /mnt/c/Users/lou/Documents/Projet/dockeer/dockezr/ansible
Étape 3: Configurer l'inventaire
# Éditer le fichier inventory.ini
nano inventory.ini
Remplacez les valeurs:
[production]
server ansible_host=192.168.1.100 ansible_user=ubuntu ansible_ssh_private_key_file=../../sskdockerz/ssh-key-2025-10-16.key
Exemple avec vos valeurs:
ansible_host: L'IP de votre serveur (ex: 192.168.1.100)ansible_user: Votre utilisateur SSH (ex: ubuntu, debian, root)ansible_ssh_private_key_file: Chemin vers votre clé SSH
Étape 4: Configurer les variables
# Éditer les variables
nano group_vars/all.yml
Modifiez au minimum:
# URL de votre repository GitHub (si vous avez pushé le code)
project_repo: "https://github.com/VOTRE_USERNAME/dockezr.git"
# Mots de passe IMPORTANTS à changer!
postgres_password: "VotreMotDePasse2024!"
grafana_admin_password: "AdminGrafana2024!"
Étape 5: Configurer les permissions SSH
# Donner les bonnes permissions à la clé SSH
chmod 600 ../../sskdockerz/ssh-key-2025-10-16.key
🚀 Exécution du Déploiement
Test de Connexion (OBLIGATOIRE)
Avant de déployer, testez la connexion:
ansible all -i inventory.ini -m ping
Résultat attendu:
server | SUCCESS => {
"changed": false,
"ping": "pong"
}
✅ Si vous voyez "SUCCESS", continuez!
❌ Si vous voyez une erreur, vérifiez:
- L'adresse IP est correcte
- Le serveur est allumé et accessible
- La clé SSH est valide
- Les permissions de la clé:
ls -la ../../sskdockerz/
Déploiement Complet
Option A: Via le script automatique (recommandé)
# Rendre le script exécutable
chmod +x deploy.sh
# Lancer le script
./deploy.sh
Le script vous guidera avec un menu interactif.
Option B: Commande directe
# Déploiement complet
ansible-playbook -i inventory.ini deploy.yml
# Avec affichage détaillé (utile pour le debug)
ansible-playbook -i inventory.ini deploy.yml -v
Sortie Attendue
Vous verrez 10 étapes s'exécuter:
PLAY [Déploiement automatisé de DockeZR sur serveur Linux] ******************
TASK [Gathering Facts] *******************************************************
ok: [server]
TASK [[1/10] 🔄 Mise à jour du cache APT] ***********************************
ok: [server]
TASK [[2/10] 🐳 Vérification si Docker est déjà installé] *******************
ok: [server]
...
TASK [✅ Déploiement terminé avec succès!] ***********************************
ok: [server] => {
"msg": [
"🎉 L'application DockeZR a été déployée avec succès!",
"",
"🌐 Accès aux services:",
" - Frontend: http://192.168.1.100:3000",
" - Backend API: http://192.168.1.100:8001",
...
]
}
PLAY RECAP *******************************************************************
server : ok=25 changed=8 unreachable=0 failed=0 skipped=3
🌐 Vérification du Déploiement
1. Vérifier les Services Web
Ouvrez votre navigateur et testez:
-
Frontend: http://VOTRE_IP:3000
- Vous devriez voir l'interface de réservation
-
API Swagger: http://VOTRE_IP:8001/docs
- Documentation interactive de l'API
-
Grafana: http://VOTRE_IP:3001
- Login: admin / votre_mot_de_passe_grafana
2. Vérifier sur le Serveur
Connectez-vous en SSH:
ssh -i ../../sskdockerz/ssh-key-2025-10-16.key VOTRE_USER@VOTRE_IP
Puis vérifiez:
# Vérifier que Docker est installé
docker --version
# Voir les conteneurs en cours d'exécution
docker ps
# Aller dans le répertoire du projet
cd /opt/dockezr
# Voir l'état détaillé
docker compose -f docker-compose.prod.yml ps
# Voir les logs
docker compose -f docker-compose.prod.yml logs -f
3. Tester l'API
# Test simple depuis votre machine
curl http://VOTRE_IP:8001/
# Lister les salles
curl http://VOTRE_IP:8001/rooms
# Lister les réservations
curl http://VOTRE_IP:8001/reservations
📸 Captures d'Écran
Pour le Livrable TP7
Prenez des captures d'écran de:
-
Exécution du playbook:
ansible-playbook -i inventory.ini deploy.ymlCapturez le terminal montrant "PLAY RECAP" avec succès
-
Conteneurs Docker en cours d'exécution:
ssh VOTRE_USER@VOTRE_IP docker ps -
L'application dans le navigateur:
- Frontend: http://VOTRE_IP:3000
- API Docs: http://VOTRE_IP:8001/docs
-
Logs du déploiement:
docker compose -f docker-compose.prod.yml logs
🐛 Dépannage Courant
Erreur: "Permission denied (publickey)"
Cause: Problème avec la clé SSH
Solution:
# Vérifier les permissions
ls -la ../../sskdockerz/ssh-key-2025-10-16.key
# Corriger si nécessaire
chmod 600 ../../sskdockerz/ssh-key-2025-10-16.key
# Tester la connexion SSH manuellement
ssh -i ../../sskdockerz/ssh-key-2025-10-16.key VOTRE_USER@VOTRE_IP
Erreur: "UNREACHABLE! => Host is unreachable"
Cause: Impossible de joindre le serveur
Solution:
# Tester la connexion réseau
ping VOTRE_IP
# Vérifier que le serveur est allumé
# Vérifier l'adresse IP dans inventory.ini
Erreur: "sudo: a password is required"
Cause: L'utilisateur n'est pas dans le groupe sudoers
Solution:
# Ajouter --ask-become-pass à la commande
ansible-playbook -i inventory.ini deploy.yml --ask-become-pass
Les conteneurs ne démarrent pas
Solution:
# SSH sur le serveur
ssh -i ../../sskdockerz/ssh-key-2025-10-16.key VOTRE_USER@VOTRE_IP
# Voir les logs détaillés
cd /opt/dockezr
docker compose -f docker-compose.prod.yml logs backend
docker compose -f docker-compose.prod.yml logs frontend
# Reconstruire si nécessaire
docker compose -f docker-compose.prod.yml up -d --build
Port déjà utilisé
Solution:
# Sur le serveur, voir ce qui utilise le port
sudo lsof -i :3000
sudo lsof -i :8001
# Arrêter le processus ou changer les ports dans group_vars/all.yml
🔄 Commandes de Gestion
Mise à Jour de l'Application
# Re-exécuter le playbook
ansible-playbook -i inventory.ini deploy.yml
Redémarrer les Services
# Sur le serveur
cd /opt/dockezr
docker compose -f docker-compose.prod.yml restart
Arrêter l'Application
# Via Ansible
ansible-playbook -i inventory.ini deploy.yml --tags stop
# Ou sur le serveur
cd /opt/dockezr
docker compose -f docker-compose.prod.yml down
Voir les Logs en Temps Réel
# Sur le serveur
cd /opt/dockezr
docker compose -f docker-compose.prod.yml logs -f
# Logs d'un service spécifique
docker compose -f docker-compose.prod.yml logs -f backend
📦 Livrable TP7
Pour valider le TP7, vous devez fournir:
1. Fichier deploy.yml
✅ Déjà créé et commenté dans ansible/deploy.yml
2. Captures d'Écran
Montrant:
- ✅ Exécution réussie du playbook (PLAY RECAP sans erreurs)
- ✅ Conteneurs Docker en cours d'exécution (docker ps)
- ✅ Application accessible dans le navigateur
- ✅ Logs montrant que tout fonctionne
3. Fichiers de Configuration
- ✅
inventory.ini- configuration des hôtes - ✅
group_vars/all.yml- variables - ✅
templates/env.prod.j2- template environnement
🎉 Félicitations!
Si vous êtes arrivé jusqu'ici et que tout fonctionne, bravo! 🚀
Votre application DockeZR est maintenant déployée automatiquement via Ansible.
Prochaines étapes possibles:
- Configurer un nom de domaine
- Mettre en place HTTPS avec Let's Encrypt
- Configurer des sauvegardes automatiques
- Ajouter plus de monitoring
Besoin d'aide? Consultez le fichier README.md dans le dossier ansible.