
KVM (Kernel-based Virtual Machine) est l’hyperviseur de référence sous Linux. Intégré au noyau depuis 2007, il transforme n’importe quel serveur Linux en plateforme de virtualisation performante. Cette formation vous accompagne de la compréhension des concepts jusqu’à l’automatisation avec Terraform.
Contrairement à une documentation classique, cette formation suit une progression pédagogique : chaque module s’appuie sur les précédents, avec des prérequis explicites, des commandes testées et des validations concrètes.
| Public | Administrateurs Linux, DevOps, SRE, développeurs |
| Prérequis | Bases Linux, terminal, notions réseau |
| Durée totale | ~15 heures (11 modules) |
| Version | libvirt 9.x+ (exemples testés avec 10.x sur Ubuntu 24.04) |
| Approche | Théorie + pratique CLI + labs + troubleshooting |
Ce que vous allez apprendre
Section intitulée « Ce que vous allez apprendre »À la fin de cette formation, vous serez capable de :
- Comprendre l’architecture KVM/QEMU/libvirt et leur interaction
- Installer KVM proprement sur Ubuntu, Debian, Rocky ou Fedora
- Créer des VMs avec virsh, virt-install et virt-manager
- Configurer le réseau (NAT par défaut, bridge pour accès externe)
- Gérer le stockage (pools, volumes, formats QCOW2)
- Automatiser l’initialisation avec Cloud-Init
- Protéger vos VMs (snapshots vs backups — comprendre la différence)
- Administrer à distance via SSH ou TCP
- Déployer en Infrastructure as Code avec Terraform
Format et méthode pédagogique
Section intitulée « Format et méthode pédagogique »| Élément | Détail |
|---|---|
| Prérequis matériel | CPU avec virtualisation (Intel VT-x / AMD-V activé dans le BIOS) |
| Prérequis logiciel | Ubuntu 24.04, Debian 12+ ou Rocky 9+ (bare-metal ou nested virt) |
| Prérequis connaissances | Terminal Linux de base, notions réseau (IP, DHCP, DNS) |
| Pédagogie | Commandes testées avec sorties réelles + validations |
| Labs | Exercices pratiques à chaque module |
| Durée totale | ~15 heures (1h30 à 2h par module) |
Environnement de lab recommandé
Section intitulée « Environnement de lab recommandé »Cette formation a été testée sur plusieurs configurations. Voici nos recommandations :
Configuration recommandée pour des performances optimales :
| Composant | Minimum | Recommandé |
|---|---|---|
| CPU | 4 cœurs avec VT-x/AMD-V | 8+ cœurs |
| RAM | 8 Go | 16-32 Go |
| Stockage | 100 Go HDD | 256 Go SSD NVMe |
| OS | Ubuntu 24.04 / Debian 12 / Rocky 9 | Ubuntu 24.04 Server |
Avantage : Performances natives, pas de limite de virtualisation.
Si vous n’avez pas de serveur dédié, vous pouvez utiliser une VM :
| Hyperviseur hôte | Activation nested virt |
|---|---|
| VMware | CPU → “Virtualize Intel VT-x/EPT” |
| VirtualBox | Non supporté (instable) |
| Proxmox/KVM | echo 1 > /sys/module/kvm_intel/parameters/nested |
| Hyper-V | Set-VMProcessor -ExposeVirtualizationExtensions $true |
Prérequis VM : 4 vCPU, 8 Go RAM minimum, 80 Go disque.
⚠️ Performances réduites (~30-50% vs bare-metal).
Certains providers cloud supportent la nested virtualization :
| Provider | Instance type | Support KVM |
|---|---|---|
| GCP | n1-standard-4+ | ✅ Natif |
| AWS | .metal instances | ✅ Bare-metal |
| Azure | Dv3/Ev3 | ✅ Nested virt |
| OVH/Hetzner | Serveurs dédiés | ✅ Bare-metal |
Coût : Prévoir 20-50€/mois pour un lab cloud.
Démonstration rapide : votre première VM en 5 commandes
Section intitulée « Démonstration rapide : votre première VM en 5 commandes »Voici ce que vous saurez faire après les modules K2 et K5 :
# 1. Vérifier que KVM est fonctionnel$ virsh -c qemu:///system versionUsing library: libvirt 10.0.0Running hypervisor: QEMU 8.2.2
# 2. Lister les réseaux disponibles$ virsh net-list Name State Autostart Persistent-------------------------------------------- default active yes yes
# 3. Créer une VM Ubuntu avec virt-install$ virt-install --name test-vm --memory 2048 --vcpus 2 \ --disk size=20 --cdrom ubuntu-24.04-live-server.iso \ --network network=default --graphics vncStarting install...
# 4. Vérifier que la VM tourne$ virsh list Id Name State------------------------- 1 test-vm running
# 5. Obtenir l'IP de la VM$ virsh domifaddr test-vm Name MAC address Protocol Address------------------------------------------------------- vnet0 52:54:00:ab:cd:ef ipv4 192.168.122.45/24Cette séquence fonctionne sur toute installation libvirt correctement configurée. Les modules K2 à K5 vous expliquent chaque étape en détail.
Vue d’ensemble de la formation
Section intitulée « Vue d’ensemble de la formation »| Partie | Titre | Modules | Public |
|---|---|---|---|
| Partie A | Comprendre | K1 | Débutant |
| Partie B | Installer et configurer | K2, K3, K4 | Débutant → Intermédiaire |
| Partie C | Créer et exploiter | K5, K6, K7, K8 | Intermédiaire |
| Partie D | Opérer et automatiser | K9, K10, K11 | Intermédiaire → Avancé |
Le parcours de formation
Section intitulée « Le parcours de formation »Partie A · Comprendre
Le modèle mental KVM/libvirt
Avant de créer des VMs, comprenez comment KVM, QEMU et libvirt collaborent. Cette base vous évitera bien des confusions.
Partie B · Installer
Installation et configuration
Installation propre sur votre distribution, configuration réseau (NAT et bridge), pools de stockage.
Partie C · Exploiter
Créer et gérer des VMs
Création de VMs, Cloud-Init, commandes virsh essentielles, snapshots et backups (et pourquoi c’est différent).
Partie D · Automatiser
Administration et IaC
Accès distant SSH/TCP, déploiement avec Terraform, troubleshooting.
Détail des modules
Section intitulée « Détail des modules »Partie A — Comprendre (concepts)
Section intitulée « Partie A — Comprendre (concepts) »K1 · Concepts KVM/libvirt
Section intitulée « K1 · Concepts KVM/libvirt »| Lien | Concepts KVM/libvirt |
| Niveau | Débutant |
| Durée | 1h |
Compétences acquises :
- Comprendre la relation KVM ↔ QEMU ↔ libvirt
- Distinguer hyperviseur Type 1 vs Type 2
- Savoir pourquoi libvirt est une couche d’abstraction
Lab : Aucun (module théorique) — schémas et analogies
Pièges couverts : Confusion KVM/QEMU, croire que libvirt est un hyperviseur
Partie B — Installer et configurer
Section intitulée « Partie B — Installer et configurer »K2 · Installation
Section intitulée « K2 · Installation »| Lien | Installation |
| Niveau | Débutant |
| Durée | 1h30 |
Compétences acquises :
- Installer libvirt sur Ubuntu, Debian ou Rocky
- Vérifier que KVM fonctionne (
kvm-ok,/dev/kvm) - Configurer les permissions utilisateur
Lab : Installation complète + validation avec virsh version
Pièges couverts :
failed to connect to the hypervisor(libvirtd arrêté)- Utilisateur non membre du groupe
libvirt - VT-x/AMD-V désactivé dans le BIOS
K3 · Réseau NAT vs Bridge
Section intitulée « K3 · Réseau NAT vs Bridge »| Lien | Réseau NAT vs Bridge |
| Niveau | Débutant → Intermédiaire |
| Durée | 2h |
Compétences acquises :
- Comprendre le réseau
default(NAT isolé) - Créer un bridge pour accès LAN direct
- Configurer des réseaux isolés ou routés
Lab : Créer br0, attacher une VM, tester connectivité LAN
Pièges couverts :
- VM non joignable depuis le LAN (NAT par défaut)
- Interface physique non “libérée” avant bridge
- Conflit NetworkManager vs systemd-networkd
K4 · Stockage
Section intitulée « K4 · Stockage »| Lien | Stockage |
| Niveau | Débutant → Intermédiaire |
| Durée | 1h30 |
Compétences acquises :
- Créer et gérer des pools de stockage
- Comprendre QCOW2 vs raw (avantages/inconvénients)
- Redimensionner un volume à chaud
Lab : Créer un pool vms, ajouter un volume, l’attacher à une VM
Pièges couverts :
- Pool “inactive” après reboot
- Permission denied (AppArmor/SELinux)
- Confusion format disque vs format fichier
Partie C — Créer et exploiter
Section intitulée « Partie C — Créer et exploiter »K5 · Créer une VM
Section intitulée « K5 · Créer une VM »| Lien | Créer une VM |
| Niveau | Intermédiaire |
| Durée | 2h |
Compétences acquises :
- Créer une VM avec
virt-install(CLI) - Utiliser virt-manager (GUI)
- Choisir les bonnes options (CPU, mémoire, réseau, disque)
Lab : Créer une VM Ubuntu, installer l’OS, configurer SSH
Pièges couverts :
- VM qui ne boote pas (ordre de boot)
- Pas de console graphique (VNC/Spice mal configuré)
- Performance dégradée (virtio non utilisé)
K6 · Cloud-Init
Section intitulée « K6 · Cloud-Init »| Lien | Cloud-Init |
| Niveau | Intermédiaire |
| Durée | 2h |
Compétences acquises :
- Utiliser des images cloud (Ubuntu, Debian, Rocky)
- Écrire un
user-dataYAML (utilisateur, SSH, packages) - Configurer le réseau avec
network-config
Lab : Déployer une VM cloud-init, SSH sans mot de passe en 2 minutes
Pièges couverts :
- Cloud-init ne s’exécute pas (machine-id non nettoyé)
- Clé SSH non injectée (erreur YAML)
- Mauvais datasource configuré
K7 · Commandes virsh
Section intitulée « K7 · Commandes virsh »| Lien | Commandes virsh |
| Niveau | Intermédiaire |
| Durée | 1h30 |
Compétences acquises :
- Maîtriser les 30 commandes virsh essentielles
- Gérer le cycle de vie des VMs (start, stop, destroy, undefine)
- Inspecter et modifier la configuration XML
Lab : Cheatsheet interactif avec exercices
Pièges couverts :
destroyne supprime pas la VM (juste force l’arrêt)undefinesans--remove-all-storagelaisse les disques- Modification XML non persistée (edit vs define)
K8 · Snapshots et backups
Section intitulée « K8 · Snapshots et backups »| Lien | Snapshots et backups |
| Niveau | Intermédiaire |
| Durée | 2h |
Compétences acquises :
- Créer des snapshots internes et externes
- Comprendre la chaîne QCOW2 (backing files)
- Différencier snapshot, clone et backup
Lab : Snapshot → modification → revert → consolidation
Pièges couverts :
- Disque qui grossit (chaîne non consolidée)
- Snapshot “corrompu” (confusion interne/externe)
- Croire qu’un snapshot = backup (non !)
Partie D — Opérer et automatiser
Section intitulée « Partie D — Opérer et automatiser »K9 · Accès distant
Section intitulée « K9 · Accès distant »| Lien | Accès distant |
| Niveau | Intermédiaire |
| Durée | 1h30 |
Compétences acquises :
- Administrer libvirt via SSH (
qemu+ssh://) - Configurer l’accès TCP (avec ou sans TLS)
- Utiliser virt-manager sur un hôte distant
Lab : Connexion SSH vers un serveur libvirt distant
Pièges couverts :
- Clé SSH non configurée pour l’utilisateur
- Pare-feu bloquant le port libvirt
- TCP sans TLS = non chiffré (risque sécurité)
K10 · Terraform + libvirt
Section intitulée « K10 · Terraform + libvirt »| Lien | Terraform + libvirt |
| Niveau | Avancé |
| Durée | 2h |
Compétences acquises :
- Utiliser le provider
dmacvicar/libvirt(v0.9.x) - Déployer VMs avec Cloud-Init en IaC
- Gérer multi-VMs avec
countetfor_each
Lab : tofu apply → VM opérationnelle avec IP en 30 secondes
Pièges couverts :
- IP vide dans les outputs (qemu-guest-agent)
- Permission denied sur le pool (AppArmor)
- Driver QCOW2 non explicite (VM ne boote pas)
- Provider 0.8 vs 0.9 (breaking changes)
K11 · Troubleshooting
Section intitulée « K11 · Troubleshooting »| Lien | Troubleshooting |
| Niveau | Avancé |
| Durée | 1h30 |
Compétences acquises :
- Diagnostiquer les 10 erreurs les plus fréquentes
- Lire et comprendre les logs libvirt
- Utiliser les outils de debug (
virsh dumpxml,journalctl)
Lab : Scénarios d’erreurs à résoudre
Pièges couverts : Tous les pièges des modules précédents, consolidés
Ce que cette formation couvre (et ne couvre pas)
Section intitulée « Ce que cette formation couvre (et ne couvre pas) »- Installation : Ubuntu, Debian, Rocky, Fedora
- Réseau : NAT (default), bridge, réseaux isolés
- Stockage : Pools dir/LVM, volumes QCOW2/raw
- Création VMs : virt-install, virt-manager, Cloud-Init
- Opérations : virsh, snapshots, clones, backups
- Accès distant : SSH, TCP, virt-manager distant
- IaC : Terraform/OpenTofu avec provider libvirt 0.9.x
- Troubleshooting : 10 erreurs fréquentes documentées
- Haute disponibilité : clustering libvirt, live migration avancée
- Stockage distribué : Ceph RBD, GlusterFS, iSCSI
- SR-IOV / PCI passthrough : accès matériel direct
- GPU passthrough : virtualisation GPU pour ML/gaming
- oVirt / RHEV : interface d’entreprise Red Hat
- Proxmox VE : voir formation dédiée
Ces sujets avancés pourront être ajoutés dans de futurs modules.
Scénarios d’incidents couverts
Section intitulée « Scénarios d’incidents couverts »Tout au long de la formation, vous apprendrez à diagnostiquer et résoudre les problèmes courants :
| # | Symptôme | Cause probable | Module |
|---|---|---|---|
| 1 | failed to connect to the hypervisor | libvirtd arrêté ou permissions | K2 |
| 2 | VM sans accès réseau externe | Réseau NAT par défaut (isolation) | K3 |
| 3 | Disque plein après snapshots | Chaîne QCOW2 non consolidée | K8 |
| 4 | Cloud-Init ne s’exécute pas | machine-id non nettoyé | K6 |
| 5 | IP vide dans Terraform output | qemu-guest-agent manquant | K10 |
| 6 | Permission denied sur le pool | AppArmor/SELinux mal configuré | K10 |
| 7 | Snapshot corrompu | Confusion snapshot ≠ backup | K8 |
| 8 | VM très lente | Trop de snapshots empilés | K8 |
| 9 | Connexion SSH impossible | Clé non injectée par Cloud-Init | K6 |
| 10 | Bridge ne fonctionne pas | Interface physique non libérée | K3 |
Par où commencer ?
Section intitulée « Par où commencer ? »Suivez les modules dans l’ordre, en commençant par les concepts (K1). Prenez le temps de bien comprendre l’architecture avant d’installer.
Premier module : Concepts KVM/libvirt
Si vous connaissez Linux et voulez juste installer KVM rapidement, allez directement au module installation (K2).
Module recommandé : Installation
Si KVM fonctionne déjà sur votre machine, allez directement aux modules pratiques : création de VM ou Cloud-Init.
Module recommandé : Créer une VM
Si vous cherchez à automatiser, allez directement au module Terraform. Il suppose les bases des modules précédents.
Module recommandé : Terraform + libvirt
Prochaines étapes
Section intitulée « Prochaines étapes »Ressources
Section intitulée « Ressources »- Documentation libvirt : libvirt.org
- Wiki KVM : linux-kvm.org
- Provider Terraform : registry.terraform.io/providers/dmacvicar/libvirt
- Images cloud Ubuntu : cloud-images.ubuntu.com
- Images cloud Debian : cloud.debian.org/images/cloud
FAQ - Questions fréquentes
Section intitulée « FAQ - Questions fréquentes »L'ordre recommandé
Le piège classique est de foncer sur les outils sans comprendre les fondamentaux. Voici l'ordre conseillé :| Étape | Sujet | Pourquoi |
|---|---|---|
| 1 | Culture DevOps/DevSecOps | Comprendre les arbitrages vitesse/qualité/risque |
| 2 | Linux et réseau | Le socle de toute production |
| 3 | Sécurité de base | Durcissement, bonnes pratiques |
| 4 | Docker | Standardiser l'exécution |
| 5 | IaC (Terraform/Ansible) | Rendre reproductible |
| 6 | CI/CD | Automatiser la livraison |
| 7 | Kubernetes | Orchestrer à l'échelle |
Règle d'or
Concepts d'abord, outils ensuite. Un ingénieur qui comprend les principes s'adapte à n'importe quel outil. Celui qui ne connaît que l'outil est perdu dès qu'il change.Estimation réaliste
| Objectif | Durée estimée | Condition |
|---|---|---|
| Premiers résultats | 2-4 semaines | Pratique quotidienne (1-2h) |
| Autonomie de base | 3-6 mois | Projets concrets + homelab |
| Maîtrise solide | 6-12 mois | Expérience terrain |
| Expertise | 2-3 ans | Production réelle |
Le facteur clé : la répétition
Lire un guide sur Docker ne fait pas de vous quelqu'un qui sait conteneuriser. C'est en cassant, en debuggant, en recommençant que les choses s'ancrent.Accélérateurs
- Homelab : environnement de test personnel
- Mini-projets : objectifs concrets et atteignables
- Quizz : valider les acquis avant de pratiquer
Réponse courte
Vous pouvez sauter Linux, mais vous le regretterez.Pourquoi Linux est incontournable
| Aspect | Impact sans Linux |
|---|---|
| Debugging | Impossible de lire les logs correctement |
| Conteneurs | Pas de compréhension du runtime |
| Réseau | Diagnostic DNS/firewall impossible |
| Permissions | Erreurs incomprises sur fichiers/processus |
| Production | Incidents = panique |
Ce que vous devez maîtriser
# Navigation et fichiers
ls, cd, cat, grep, find, chmod, chown
# Processus et services
ps, top, systemctl, journalctl
# Réseau
ip, ss, curl, dig, ping
Verdict
Linux n'est pas glamour, mais c'est un multiplicateur d'efficacité. Investissez 2-4 semaines sur les bases, vous gagnerez des mois plus tard.Réponse nuancée
Non obligatoire, mais fortement recommandé à terme.Ce qui fonctionne sans Kubernetes
| Compétence | Valable sans K8s ? |
|---|---|
| Linux/système | ✅ Oui |
| Docker | ✅ Oui |
| CI/CD | ✅ Oui |
| Terraform/Ansible | ✅ Oui |
| Sécurité applicative | ✅ Oui |
| Observabilité | ✅ Oui |
Pourquoi apprendre Kubernetes quand même
- Employabilité : présent dans 70%+ des offres DevOps
- Patterns modernes : déploiements déclaratifs, autoscaling
- Écosystème riche : Helm, ArgoCD, Istio
Recommandation
Maîtrisez d'abord Docker + CI/CD + IaC. Kubernetes viendra naturellement comme la suite logique pour l'orchestration à l'échelle.DevOps : livrer vite et bien
DevOps combine développement (Dev) et opérations (Ops) pour :- Accélérer les livraisons
- Automatiser les déploiements
- Améliorer la collaboration
DevSecOps : ajouter la sécurité dès le départ
DevSecOps = DevOps + Security intégrée, pas ajoutée.| Approche | Quand intervient la sécurité ? |
|---|---|
| Traditionnelle | À la fin (audit avant prod) |
| DevOps | Souvent oubliée ou tardive |
| DevSecOps | Dès le début (shift-left) |
Le shift-left en pratique
┌─────────┐ ┌─────────┐ ┌─────────┐ ┌─────────┐
│ Code │ → │ Build │ → │ Test │ → │ Prod │
└────┬────┘ └────┬────┘ └────┬────┘ └────┬────┘
│ │ │ │
Scan Scan Scan Scan
SAST dépendances DAST runtime
Bénéfice clé
Une faille détectée en développement coûte 10x moins cher à corriger qu'en production.Outils essentiels par domaine
| Domaine | Outil recommandé | Alternative |
|---|---|---|
| Versionning | Git | - |
| Conteneurs | Docker | Podman |
| CI/CD | GitLab CI | GitHub Actions, Jenkins |
| IaC Config | Ansible | Puppet, Chef |
| IaC Provision | Terraform | Pulumi, OpenTofu |
| Orchestration | Kubernetes | Docker Swarm |
| Scan vulns | Trivy | Grype, Snyk |
| Observabilité | Prometheus + Grafana | Datadog |
Conseil important
Les outils changent, les concepts restent.Apprenez :- Le concept de conteneurisation (pas juste Docker)
- Le concept d'Infrastructure as Code (pas juste Terraform)
- Le concept de pipeline CI/CD (pas juste GitLab)
Le homelab : votre terrain d'entraînement
Pas besoin d'environnement professionnel pour apprendre. Un homelab suffit.Options de démarrage
| Option | Coût | Idéal pour |
|---|---|---|
| VM locale (VirtualBox) | Gratuit | Débuter |
| WSL2 (Windows) | Gratuit | Docker sur Windows |
| Raspberry Pi | ~50€ | Cluster K3s |
| VPS cloud | ~5€/mois | Expérience réseau réel |
| Vieux PC | Récup | Homelab complet |
Projets concrets à réaliser
- Conteneuriser une application web simple
- Créer un pipeline CI/CD sur GitHub Actions (gratuit)
- Déployer avec Ansible sur une VM
- Provisionner une infra avec Terraform (cloud gratuit tier)
- Scanner vos images avec Trivy
Règle d'or
Cassez des choses. Les erreurs sur votre homelab sont le meilleur apprentissage, sans risque pour la production.Réponse pragmatique
Pas obligatoires, mais peuvent faciliter l'accès à certains postes.Certifications utiles
| Certification | Domaine | Valeur marché |
|---|---|---|
| CKA / CKAD | Kubernetes | ⭐⭐⭐ Très reconnue |
| AWS Solutions Architect | Cloud AWS | ⭐⭐⭐ Standard |
| Azure Administrator | Cloud Azure | ⭐⭐⭐ Standard |
| Terraform Associate | IaC | ⭐⭐ Bonne base |
| RHCSA | Linux | ⭐⭐ Solide |
Ce qui compte vraiment
- Portfolio GitHub avec projets concrets
- Expérience démontrable (même sur homelab)
- Capacité à expliquer ce que vous avez fait
- Résolution de problèmes en entretien technique
Recommandation
Investissez d'abord dans la pratique. Une certification sans compétence réelle ne tient pas face à un entretien technique.La méthode qui fonctionne
- Choisissez un sujet précis
- Pas "apprendre Kubernetes"
- Mais "déployer un pod et comprendre les manifests"
- Vérifiez les prérequis
- Avez-vous les bases nécessaires ?
- Sinon, revenez en arrière
- Validez par un quizz
- Avant de pratiquer, testez vos connaissances
- Identifiez les trous
- Faites un mini-projet
- Objectif concret, atteignable en quelques heures
- Même petit, même imparfait
- Notez les blocages
- 3 points maximum
- Revenez aux guides ciblés
- Re-testez jusqu'à stabilité
- Le résultat doit être reproductible
Règles d'or
| Principe | Application |
|---|---|
| Petites étapes | Un sujet bien compris > dix survolés |
| Pratique régulière | 1h/jour > 7h le dimanche |
| Documenter | Reformuler aide à ancrer |
| Accepter l'échec | Les erreurs enseignent plus que les succès |