dr-test - Disaster Recovery en local

Et si le serveur brûlait ce soir ? Plutôt que de croiser les doigts, j’ai simulé 10 scénarios catastrophe dans une VM jetable. Résultat : tout reconstruit en 3 minutes 30. Maintenant je dors tranquille.

III - Croissance 1 jour 2026-03-10 2026-03-14
XP
70%

Pourquoi

La question qui empêche de dormir quand on self-host : et si le serveur brûlait ce soir ? Est-ce que je saurais tout reconstruire ? En combien de temps ? Avec l’infra Cloud qui héberge mes projets, la réponse était “probablement, je crois, à peu près”. Pas très rassurant.

Plutôt que de croiser les doigts, j’ai décidé de simuler la catastrophe pour de vrai. Pas en production, mais dans une VM jetable qui reproduit exactement le même environnement. Si les playbooks Ansible sont capables de tout reconstruire à partir de zéro sur une VM vierge, ils seront capables de le faire sur un vrai VPS neuf le jour où il faudra.

Comment ça marche

Une VM QEMU simule un VPS Ubuntu vierge. Les playbooks Ansible de production sont joués contre cette VM. vm.sh reset recrée un disque vierge en une commande. On peut détruire et reconstruire autant de fois qu’on veut, sans risque.

10 scénarios testent trois choses : est-ce que l’infra se déploie correctement from scratch ? Est-ce qu’elle résiste quand on casse des trucs (kill de containers, injection de drift, nuke complet) ? Et est-ce que les règles de sécurité tiennent (pas de privilèges inutiles, pas de socket Docker exposé) ?

La réponse : tout se reconstruit en 3 minutes 30. Un nuke complet suivi d’un redéploiement prend 1 minute 08. Ce n’est pas un exploit, c’est juste le résultat normal quand l’infra est correctement automatisée. Mais maintenant je le sais, au lieu de le supposer.

Ce que j’en retiens

Le disaster recovery, c’est comme les tests unitaires : on sait qu’il faudrait le faire, on repousse toujours, et le jour où on le fait enfin on se demande pourquoi on a attendu. Une journée de travail pour pouvoir dormir tranquille, c’est un bon ratio.

Stats

Scénarios10
Services testés13
Score52 PASS / 1 FAIL
RTO deploy complet~3m30s
RTO nuke + redeploy~1m08s
Durée du projet1 jour

Stack technique

QEMU

VM jetable

Simuler un VPS vierge sans risquer la prod

Ansible

Playbooks de production

Rejouer les mêmes rôles que le vrai serveur

Bash

Runner de scénarios

Enchaîner les scénarios avec verdicts automatiques

10 scénarios, 9 runs, 52 PASS

Journée complète de disaster recovery. VM QEMU jetable, playbooks Ansible de production. 9 runs en 35 minutes, score final 52 PASS / 1 FAIL. RTO mesuré : 3m30s deploy, 1m08s nuke+redeploy.

  • vm.sh : cycle de vie VM QEMU (start/stop/reset/ssh)
  • Runner Bash 407 lignes : PASS/FAIL/SKIP + timer
  • S1-S4 : deploy from scratch (Docker, Traefik, monitoring, alerting)
  • S5-S7 : résilience (kill, nuke+redeploy, drift injection+correction)
  • S8-S10 : non-régression (idempotence, sécurité, resource limits)