Aller au contenu
Virtualisation high

Formation KVM/libvirt : cours complet (11 modules) + labs + IaC

16 min de lecture

Logo KVM

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.

PublicAdministrateurs Linux, DevOps, SRE, développeurs
PrérequisBases Linux, terminal, notions réseau
Durée totale~15 heures (11 modules)
Versionlibvirt 9.x+ (exemples testés avec 10.x sur Ubuntu 24.04)
ApprocheThéorie + pratique CLI + labs + troubleshooting

À 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
ÉlémentDétail
Prérequis matérielCPU avec virtualisation (Intel VT-x / AMD-V activé dans le BIOS)
Prérequis logicielUbuntu 24.04, Debian 12+ ou Rocky 9+ (bare-metal ou nested virt)
Prérequis connaissancesTerminal Linux de base, notions réseau (IP, DHCP, DNS)
PédagogieCommandes testées avec sorties réelles + validations
LabsExercices pratiques à chaque module
Durée totale~15 heures (1h30 à 2h par module)

Cette formation a été testée sur plusieurs configurations. Voici nos recommandations :

Configuration recommandée pour des performances optimales :

ComposantMinimumRecommandé
CPU4 cœurs avec VT-x/AMD-V8+ cœurs
RAM8 Go16-32 Go
Stockage100 Go HDD256 Go SSD NVMe
OSUbuntu 24.04 / Debian 12 / Rocky 9Ubuntu 24.04 Server

Avantage : Performances natives, pas de limite de virtualisation.

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 :

Fenêtre de terminal
# 1. Vérifier que KVM est fonctionnel
$ virsh -c qemu:///system version
Using library: libvirt 10.0.0
Running 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 vnc
Starting 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/24

Cette séquence fonctionne sur toute installation libvirt correctement configurée. Les modules K2 à K5 vous expliquent chaque étape en détail.

PartieTitreModulesPublic
Partie AComprendreK1Débutant
Partie BInstaller et configurerK2, K3, K4Débutant → Intermédiaire
Partie CCréer et exploiterK5, K6, K7, K8Intermédiaire
Partie DOpérer et automatiserK9, K10, K11Intermédiaire → Avancé

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.

Commencer par les concepts →

Partie B · Installer

Installation et configuration

Installation propre sur votre distribution, configuration réseau (NAT et bridge), pools de stockage.

Installation →

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

Créer une VM →

Partie D · Automatiser

Administration et IaC

Accès distant SSH/TCP, déploiement avec Terraform, troubleshooting.

Terraform + libvirt →

LienConcepts KVM/libvirt
NiveauDébutant
Durée1h

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


LienInstallation
NiveauDébutant
Durée1h30

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

LienRéseau NAT vs Bridge
NiveauDébutant → Intermédiaire
Durée2h

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

LienStockage
NiveauDébutant → Intermédiaire
Durée1h30

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

LienCréer une VM
NiveauIntermédiaire
Durée2h

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

LienCloud-Init
NiveauIntermédiaire
Durée2h

Compétences acquises :

  • Utiliser des images cloud (Ubuntu, Debian, Rocky)
  • Écrire un user-data YAML (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é

LienCommandes virsh
NiveauIntermédiaire
Durée1h30

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 :

  • destroy ne supprime pas la VM (juste force l’arrêt)
  • undefine sans --remove-all-storage laisse les disques
  • Modification XML non persistée (edit vs define)

LienSnapshots et backups
NiveauIntermédiaire
Durée2h

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

LienAccès distant
NiveauIntermédiaire
Durée1h30

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

LienTerraform + libvirt
NiveauAvancé
Durée2h

Compétences acquises :

  • Utiliser le provider dmacvicar/libvirt (v0.9.x)
  • Déployer VMs avec Cloud-Init en IaC
  • Gérer multi-VMs avec count et for_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)

LienTroubleshooting
NiveauAvancé
Durée1h30

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


  • 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

Tout au long de la formation, vous apprendrez à diagnostiquer et résoudre les problèmes courants :

#SymptômeCause probableModule
1failed to connect to the hypervisorlibvirtd arrêté ou permissionsK2
2VM sans accès réseau externeRéseau NAT par défaut (isolation)K3
3Disque plein après snapshotsChaîne QCOW2 non consolidéeK8
4Cloud-Init ne s’exécute pasmachine-id non nettoyéK6
5IP vide dans Terraform outputqemu-guest-agent manquantK10
6Permission denied sur le poolAppArmor/SELinux mal configuréK10
7Snapshot corrompuConfusion snapshot ≠ backupK8
8VM très lenteTrop de snapshots empilésK8
9Connexion SSH impossibleClé non injectée par Cloud-InitK6
10Bridge ne fonctionne pasInterface physique non libéréeK3

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

Ce site vous est utile ?

Sachez que moins de 1% des lecteurs soutiennent ce site.

Je maintiens +700 guides gratuits, sans pub ni tracing. Aujourd'hui, ce site ne couvre même pas mes frais d'hébergement, d'électricité, de matériel, de logiciels, mais surtout de cafés.

Un soutien régulier, même symbolique, m'aide à garder ces ressources gratuites et à continuer de produire des guides de qualité. Merci pour votre appui.