Debian pour DevOps : Configuration et Maîtrise
🎯 Objectifs de ce cours
À la fin, tu seras capable de :
✅ Comprendre Debian : Son rôle dans l'écosystème DevOps, sa stabilité, pourquoi elle est le standard
✅ Naviguer efficacement : Structure des répertoires, fichiers clés, organisation du FS
✅ Configurer ton environnement : Personnaliser ~/.bashrc, créer des alias, gérer le PATH
✅ Utiliser les outils essentiels : Bash, systemd, SSH, editeurs, curl, et AWK
✅ Faire la différence UI vs Headless : Quand utiliser une GUI, quand rester en serveur headless
🐧 Debian : C'est Quoi Exactement ?
Définition Rapide
Debian est une distribution Linux communautaire, 100% open source, réputée pour sa stabilité extrême et sa fiabilité. C'est sur elle que reposent Ubuntu, Linux Mint, Kali Linux, et beaucoup d'autres.
Pourquoi Debian en DevOps ?
| Critère | Score | Détail |
|---|---|---|
| Stabilité | ⭐⭐⭐⭐⭐ | Pas de mise à jour cassante. Parfait pour production |
| Communauté | ⭐⭐⭐⭐⭐ | 1000+ contributeurs, énorme documentation |
| Paquet APT | ⭐⭐⭐⭐⭐ | Gestion dépendances automatique, 59k packages |
| Serveurs | ⭐⭐⭐⭐⭐ | C'est la base de la plupart des VPS |
| Apprentissage | ⭐⭐⭐⭐ | Assez simple pour débuter, assez puissant pour le vrai travail |
Résumé : Si tu vas faire du DevOps en production, Debian sera probablement ton OS.
Un Peu d'Histoire
- 1993 : Ian Murdock crée Debian avec une vision radicale : un OS communautaire, gratuit, basé sur des principes open source stricts
- 2004 : Ubuntu naît basée sur Debian (en gardant l'ADN)
- Aujourd'hui : Debian est installée sur des millions de serveurs mondiaux
Ce qu'il faut retenir : Debian est LA fondation. Elle n'évolue pas vite, mais elle ne casse jamais.
📊 Structure des Répertoires Debian (FS)
Debian suit la norme FHS (Filesystem Hierarchy Standard). Voici les dossiers clés pour un DevOps :
Dossiers Critiques
/bin → Commandes essentielles (ls, cp, rm, etc.)
/boot → Fichiers de démarrage (kernel, bootloader)
/etc → Configuration des applications (TRÈS IMPORTANT EN DEVOPS)
/home → Dossiers personnels des utilisateurs
/lib → Bibliothèques partagées (dépendances)
/opt → Logiciels additionnels installés manuellement
/root → Dossier personnel du root (admin)
/sbin → Commandes système (pour root)
/usr → Programmes et données système
/var → Données variables (logs, databases, cache)
Les 3 Dossiers Clés pour DevOps
1️⃣ /etc - Configuration centrale
/etc/nginx # Config Nginx
/etc/systemd # Config services
/etc/security # Permissions, sudoers
/etc/hosts # Résolution DNS locale
Pourquoi c'est crucial ? C'est le cœur de la configuration. Chaque application a sa config ici.
2️⃣ /var/log - Les logs (VOTRE RADAR)
/var/log/syslog # Logs système
/var/log/auth.log # Logs authentification (SSH, sudo)
/var/log/nginx/ # Logs Nginx
/var/log/docker/ # Logs Docker
Pourquoi c'est crucial ? En DevOps, les logs sont votre première source d'info quand quelque chose casse.
3️⃣ /opt - Apps personnalisées
/opt/myapp # Votre application custom
/opt/monitoring # Votre stack monitoring
Pourquoi c'est crucial ? C'est où vous installez vos apps maison.
💻 UI vs Headless (Mode Serveur)
Avec Interface Graphique (UI)
Qu'est-ce que c'est ?
Debian avec GNOME, KDE, Xfce, etc. Fenêtres, souris, des icônes.
Quand l'utiliser :
- Machine de développement locale
- Postes de travail
- Apprentissage initial (c'est plus facile)
Problème : Bouffe des ressources (CPU, RAM). Jamais en production.
Headless (Sans GUI)
Qu'est-ce que c'est ?
Aucune interface graphique. Seulement le terminal. Léger, rapide, efficace.
Quand l'utiliser :
- ✅ Serveurs production (99% des cas)
- ✅ Conteneurs Docker
- ✅ VPS/Cloud
- ✅ Tout où vous accédez via SSH
Avantage : Moins de ressources, plus de sécurité (moins de surface d'attaque).
Réalité DevOps : Vous allez travailler 100% en headless. Acceptez-le dès maintenant.
⚙️ Configurer Votre Environnement Debian
Le Fichier ~/.bashrc (VOTRE CONFIG PERSONNELLE)
C'est le fichier magique qui s'exécute chaque fois que vous ouvrez un terminal.
# Afficher le contenu
cat ~/.bashrc
# Éditer (avec nano pour les débutants)
nano ~/.bashrc
Ce que l'on peut faire dedans :
- Créer des alias (raccourcis)
- Modifier le prompt (apparence du $)
- Définir des variables d'environnement
- Charger des fonctions personnalisées
🔗 Alias : Les Raccourcis DevOps
Au lieu de taper des commandes longues, créez des alias :
# Dans ~/.bashrc, ajoutez :
alias lsa='ls -la' # Liste détaillée
alias cls='clear' # Effacer l'écran
alias up='cd ..' # Aller au dossier parent
alias ports='netstat -tlnp' # Voir les ports ouverts (DevOps!)
alias logs='tail -f /var/log/syslog' # Suivre les logs en temps réel
alias dps='docker ps' # Voir les containers (si vous utilisez Docker)
Après modification :
source ~/.bashrc # Rechargez la config
🎨 Personnaliser le Prompt (PS1)
L'invite de commande par défaut est user@host:path$. Vous pouvez la personnaliser :
# Simple mais informatif
PS1='\u@\h:\w\$ '
# Avec couleurs (pour les DevOps visuels !)
PS1='\[\033[01;32m\]\u@\h\[\033[00m\]:\[\033[01;34m\]\w\[\033[00m\]\$ '
# Codes utiles :
# \u = utilisateur
# \h = hostname
# \w = répertoire actuel
# \t = temps
# \$ = $ ou # (si root)
📍 Variables d'Environnement
Les variables d'environnement sont des valeurs que tout programme peut lire. Exemples courants :
# Ajouter dans ~/.bashrc
# Java pour certaines apps
export JAVA_HOME=/usr/lib/jvm/java-11-openjdk-amd64
# Langue
export LANG=en_US.UTF-8
# Proxy si vous en utlisez un
export http_proxy=http://proxy.example.com:8080
export https_proxy=http://proxy.example.com:8080
# Vérifier toutes les variables
env | sort
🛣️ PATH : Comment Linux Trouve les Commandes
C'est Quoi ?
PATH est une variable spéciale qui dit au système : "Cherche les programmes dans ces dossiers".
Visualiser le PATH
echo $PATH
# Résultat ressemble à :
# /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
Quand vous tapez ls, Linux cherche dans ces dossiers (dans l'ordre) jusqu'à trouver ls.
Ajouter un Dossier au PATH (Temporaire)
Pour la session actuelle seulement :
export PATH=$PATH:/opt/myapp/bin
# Vérifier
echo $PATH
Dès qu'on ferme le terminal, c'est oublié.
Ajouter au PATH (Permanent)
Ajoutez cette ligne à ~/.bashrc :
# Éditer
nano ~/.bashrc
# Ajouter cette ligne à la fin
export PATH=$PATH:/opt/myapp/bin:/usr/local/go/bin
# Recharger
source ~/.bashrc
Cas DevOps courant : Ajouter des binaires customs, Go, Node, etc.
🛠️ Les Outils Essentiels Préinstallés
Debian vient avec 59k packages. Voici les plus importants pour DevOps :
1. 🐚 Bash (Shell)
C'est l'interpréteur de commandes. Vous l'utilisez tous les jours.
# Scripts basiques
bash myscript.sh
# Vérifier la version
bash --version
Vous l'utiliserez pour : Boucles, conditions, automatisation, cronjobs.
2. 🔧 systemd (Gestionnaire de Services)
C'est le système qui gère les services (Nginx, Docker, PostgreSQL, etc.)
# Voir l'état d'un service
systemctl status nginx
# Démarrer / Arrêter
systemctl start nginx
systemctl stop nginx
# Activer au démarrage
systemctl enable nginx
# Voir tous les services
systemctl list-units --type=service
Crucial en DevOps : Vous allez utiliser systemctl tous les jours.
3. 🔒 OpenSSH (Connexions sécurisées)
Pour se connecter à des serveurs distants :
# Connexion SSH basique
ssh user@host
# Avec clé privée
ssh -i ~/.ssh/id_rsa user@host
# Vérifier que SSH est lancé
sudo systemctl status ssh
# Voir les logs SSH (pour déboguer)
sudo tail -f /var/log/auth.log
Crucial en DevOps : SSH est votre cordon ombilical avec les serveurs.
4. ✏️ Vim et Nano (Éditeurs de Texte)
Pour éditer les fichiers de config rapidement.
Nano (plus facile pour débuter) :
nano /etc/nginx/nginx.conf
# Ctrl+O = Sauvegarder
# Ctrl+X = Quitter
Vim (plus puissant mais compliqué) :
vim /etc/nginx/nginx.conf
# ESC + :wq = Sauvegarder et quitter
# ESC + :q! = Quitter sans sauvegarder
Pro tip : Vim est 10x plus rapide si vous maîtrisez, mais Nano suffit pour débuter.
5. 📥 curl et wget (Télécharger du Web)
Pour récupérer des fichiers ou faire des requêtes HTTP.
# curl = plus polyvalent
curl https://api.example.com/data
curl -X POST -d "data" https://api.example.com
# wget = simple et orienté téléchargement
wget https://example.com/file.tar.gz
wget -r https://example.com/ # Télécharger un site entier
# curl avec authentification
curl -u user:password https://api.example.com
Cas DevOps : Tester des APIs, télécharger des packages, checker des URLs.
6. 🔍 AWK (Traitement de Texte Puissant)
AWK c'est magique pour parser des logs et fichiers texte.
# Afficher la 1ère colonne de chaque ligne
awk '{print $1}' /var/log/syslog
# Compter les lignes
awk 'END {print NR}' /var/log/syslog
# Filtrer et afficher
awk '/ERROR/ {print $1, $3, $5}' /var/log/syslog
# Calculs
awk '{sum += $2} END {print "Total:", sum}' data.txt
# Exemple réel : Voir les IPs qui se connectent en SSH
awk '/ssh/ {print $NF}' /var/log/auth.log | sort | uniq -c
Cas DevOps : Parser les logs, analyser les performances, extraire les données.
📋 Outils Bonus (Très Courants)
# grep = chercher du texte (ESSENTIEL)
grep "ERROR" /var/log/syslog
# sed = éditer du texte en masse
sed 's/oldtext/newtext/g' file.txt
# less = afficher des gros fichiers facilement
less /var/log/syslog
# find = chercher des fichiers
find /opt -name "*.log" -type f
# ps = voir les processus
ps aux | grep nginx
# top = surveiller les ressources en temps réel
top
# netstat = voir les connexions réseau
netstat -tlnp | grep LISTEN
📝 À faire en pratique - Votre Premier Jour sur Debian
- ✅ Ouvrir un terminal et vérifier votre
$PATH:echo $PATH - ✅ Éditer
~/.bashrcet ajouter 3 alias utiles - ✅ Taper
source ~/.bashrcpour recharger - ✅ Tester vos alias
- ✅ Afficher la structure avec
tree /etc(ouls -la /etc) - ✅ Lire les logs :
tail -f /var/log/syslog - ✅ Voir les services :
systemctl list-units --type=service - ✅ Faire un
curl https://google.compour tester la connection - ✅ Utiliser
awksur un fichier de log
🎯 Prochaines Étapes
Maintenant que vous comprenez Debian en tant que base, vous êtes prêt pour : - Administrer des services (Nginx, Docker, Databases) - Écrire des scripts (bash, Python) - Automatiser avec Ansible/Terraform - Déployer en production
Debian est votre fondation solide. Construisez dessus ! 🚀