Files
dockezr/ansible/GUIDE_EXECUTION.md

417 lines
8.8 KiB
Markdown

# 📘 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.ini` avec 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)
```bash
# 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
```bash
# Dans WSL, aller dans le projet
cd /mnt/c/Users/lou/Documents/Projet/dockeer/dockezr/ansible
```
### Étape 3: Configurer l'inventaire
```bash
# Éditer le fichier inventory.ini
nano inventory.ini
```
Remplacez les valeurs:
```ini
[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
```bash
# Éditer les variables
nano group_vars/all.yml
```
Modifiez au minimum:
```yaml
# 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
```bash
# 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:
```bash
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é)**
```bash
# 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**
```bash
# 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:
```bash
ssh -i ../../sskdockerz/ssh-key-2025-10-16.key VOTRE_USER@VOTRE_IP
```
Puis vérifiez:
```bash
# 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
```bash
# 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:
1. **Exécution du playbook**:
```bash
ansible-playbook -i inventory.ini deploy.yml
```
Capturez le terminal montrant "PLAY RECAP" avec succès
2. **Conteneurs Docker en cours d'exécution**:
```bash
ssh VOTRE_USER@VOTRE_IP
docker ps
```
3. **L'application dans le navigateur**:
- Frontend: http://VOTRE_IP:3000
- API Docs: http://VOTRE_IP:8001/docs
4. **Logs du déploiement**:
```bash
docker compose -f docker-compose.prod.yml logs
```
---
## 🐛 Dépannage Courant
### Erreur: "Permission denied (publickey)"
**Cause**: Problème avec la clé SSH
**Solution**:
```bash
# 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**:
```bash
# 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**:
```bash
# Ajouter --ask-become-pass à la commande
ansible-playbook -i inventory.ini deploy.yml --ask-become-pass
```
### Les conteneurs ne démarrent pas
**Solution**:
```bash
# 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**:
```bash
# 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
```bash
# Re-exécuter le playbook
ansible-playbook -i inventory.ini deploy.yml
```
### Redémarrer les Services
```bash
# Sur le serveur
cd /opt/dockezr
docker compose -f docker-compose.prod.yml restart
```
### Arrêter l'Application
```bash
# 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
```bash
# 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.