Exercice 06 : Projet Capstone - Organiser et Analyser les Fichiers d'un Projet DevOps
🎯 Objectifs
À la fin de cet exercice, vous serez capable de :
- ✅ Créer une arborescence de projet structurée
- ✅ Attribuer les bonnes permissions à chaque type de fichier
- ✅ Localiser des fichiers avec
find - ✅ Extraire des informations depuis des logs avec
grepet les pipes - ✅ Produire un rapport d'état système avec les commandes de base
Durée estimée : 40 minutes
Difficulté : ⭐⭐⭐☆☆ (Intermédiaire)
Prérequis :
- Avoir complété les exercices 01 à 05
- Un système Linux (Ubuntu recommandé)
📖 Contexte
Vous intégrez une équipe DevOps et on vous demande d'organiser l'espace de travail d'un nouveau projet. Votre mission : créer l'arborescence, poser les bonnes permissions, générer des logs de test, et produire un rapport d'analyse.
Cet exercice mobilise toutes les compétences du module :
- Navigation et gestion des fichiers (exercices 01-02)
- Permissions et propriété (exercice 03)
- Processus système (exercice 04)
- Pipes et traitement de texte (exercice 05)
📋 Énoncé
Mettez en place l'espace de travail du projet devops-project en suivant les 6 tâches ci-dessous.
🧭 Déroulement de l'exercice
Tâche 1 : Créer l'arborescence du projet
Dans votre répertoire home, créez la structure suivante :
~/devops-project/
├── scripts/
├── logs/
│ ├── access/
│ └── errors/
├── config/
└── backup/Indice :
mkdir -pcrée des dossiers imbriqués en une seule commande.
Vérification : find ~/devops-project -type d doit lister les 6 répertoires.
Tâche 2 : Créer les fichiers du projet
Créez les fichiers suivants avec du contenu :
scripts/deploy.shcontenant#!/bin/bashsuivi deecho "Déploiement lancé"config/app.confcontenantENV=productionetPORT=8080(une variable par ligne)logs/access/access.logavec au moins 5 lignes simulant des requêtes HTTP (format :IP METHOD URL STATUS)logs/errors/error.logavec 3 lignes contenant le motERRORet 2 lignesWARNING
Indice : Utilisez
echo "contenu" > fichierpour créer avec contenu, etecho "ligne" >> fichierpour ajouter sans écraser.
Vérification : wc -l ~/devops-project/logs/errors/error.log doit afficher 5.
Tâche 3 : Appliquer les permissions correctes
Appliquez les permissions adaptées à chaque fichier/dossier :
| Fichier/Dossier | Permission | Raison |
|---|---|---|
scripts/deploy.sh | 755 | Script exécutable par tous |
config/app.conf | 640 | Lisible par owner et groupe, secret pour les autres |
logs/access/ | 755 | Répertoire accessible |
logs/errors/ | 700 | Accessible uniquement par owner |
backup/ | 750 | Owner + groupe, pas les autres |
Indice :
chmod 755 fichieren notation numérique. Pour changer le groupe du projet :chown -R $USER:$USER ~/devops-project.
Vérification : ls -l ~/devops-project/scripts/deploy.sh doit afficher -rwxr-xr-x.
Tâche 4 : Localiser des fichiers avec find
Exécutez les 3 recherches suivantes :
- Lister tous les fichiers
.logdu projet - Lister tous les fichiers modifiés dans la dernière minute
- Lister tous les fichiers avec des permissions exactement
755
Indice :
find ~/devops-project -name "*.log"pour les logs.-mmin -1pour la dernière minute.-perm 755pour les permissions exactes.
Vérification : La première recherche doit retourner exactement 2 fichiers .log.
Tâche 5 : Analyser les logs avec les pipes
Depuis les fichiers de log créés en Tâche 2, produisez ces statistiques en utilisant uniquement des pipes :
- Nombre d'erreurs : compter les lignes contenant
ERRORdanserror.log - Nombre d'avertissements : compter les lignes contenant
WARNINGdanserror.log - IPs uniques : extraire et dédupliquer les adresses IP de
access.log(première colonne) - URLs les plus demandées : afficher les 3 URLs les plus fréquentes de
access.log
Indice :
grep -c "ERROR"compte les lignes.cut -d' ' -f1extrait la première colonne (séparateur espace).sort | uniq -c | sort -rn | head -3pour le top 3.
Vérification : Les 4 commandes doivent s'exécuter sans erreur et produire des résultats cohérents.
Tâche 6 : Générer un rapport d'état système
Créez le fichier ~/devops-project/rapport-etat.txt contenant :
- La date et l'heure actuelles
- Le nom de l'utilisateur connecté
- Les 5 processus utilisant le plus de mémoire (colonne %MEM)
- Le nombre total de fichiers dans le projet
- Le résultat de l'analyse des erreurs (Tâche 5, point 1)
Utilisez uniquement des redirections (> et >>) pour construire ce fichier sans éditeur.
Indice :
date >> fichier,whoami >> fichier,ps aux --sort=-%mem | head -6 >> fichier. Pour compter les fichiers du projet :find ~/devops-project -type f | wc -l >> fichier.
Vérification : cat ~/devops-project/rapport-etat.txt doit afficher un rapport lisible avec les 5 sections.
🗂️ Mini-Projet : Rapport complet en une commande
Assemblez toutes les tâches précédentes pour générer un rapport de projet complet en exécutant ce bloc de commandes :
{
echo "========================================"
echo "RAPPORT DU PROJET devops-project"
echo "Date : $(date)"
echo "Utilisateur : $(whoami)"
echo "========================================"
echo ""
echo "--- Arborescence ---"
find ~/devops-project -type f | sort
echo ""
echo "--- Permissions des fichiers clés ---"
ls -l ~/devops-project/scripts/deploy.sh
ls -l ~/devops-project/config/app.conf
echo ""
echo "--- Analyse des logs d'erreurs ---"
echo "ERRORs : $(grep -c 'ERROR' ~/devops-project/logs/errors/error.log)"
echo "WARNINGs : $(grep -c 'WARNING' ~/devops-project/logs/errors/error.log)"
echo ""
echo "--- Top 3 des URLs accédées ---"
cut -d' ' -f3 ~/devops-project/logs/access/access.log | sort | uniq -c | sort -rn | head -3
echo ""
echo "--- Processus actifs (top 5 mémoire) ---"
ps aux --sort=-%mem | awk 'NR==1 || NR<=6 {print}'
} > ~/devops-project/rapport-final.txt
cat ~/devops-project/rapport-final.txtCheckpoints de validation :
find ~/devops-project -type d | wc -lretourne 6 (le projet + 5 sous-dossiers)ls -l ~/devops-project/scripts/deploy.shaffiche-rwxr-xr-xls -l ~/devops-project/config/app.confaffiche-rw-r-----grep -c 'ERROR' ~/devops-project/logs/errors/error.logretourne 3find ~/devops-project -name '*.log' | wc -lretourne 2- Le fichier
~/devops-project/rapport-final.txtexiste et contient toutes les sections