Files
dockezr/ansible/GUIDE_EXECUTION.md
T

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

# 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:

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:

  1. Exécution du playbook:

    ansible-playbook -i inventory.ini deploy.yml
    

    Capturez le terminal montrant "PLAY RECAP" avec succès

  2. Conteneurs Docker en cours d'exécution:

    ssh VOTRE_USER@VOTRE_IP
    docker ps
    
  3. L'application dans le navigateur:

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