Base de connaissances

Machines virtuelles Avancé 24 min

Migrer une application vers une VM

Préparer une migration avec moins d’interruption et moins de surprises DNS.

Objectif pratique

Réduire les interruptions pendant le transfert d’une application existante vers une nouvelle machine virtuelle.

Distribution utilisée

Debian / Ubuntu

Sommaire

  1. Faire l’inventaire complet
  2. Préparer la destination sans couper
  3. Tester avec un nom temporaire
  4. Planifier la synchronisation finale
  5. Garder un retour arrière

Guide détaillé

Étape 1

Faire l’inventaire complet

Fichiers, base, cron, variables, certificats, emails et intégrations externes doivent être listés avant de déplacer quoi que ce soit.

Observer la machine avant de changer quoi que ce soit

Ces commandes affichent la distribution, le nom de la machine, les interfaces réseau, les routes, la mémoire et l’espace disque. Elles ne modifient rien.

Debian / Ubuntu
cat /etc/os-release
hostnamectl
ip -br addr
ip route
free -h
df -h
Ce que font les commandes
  • `cat /etc/os-release` affiche la distribution et sa version exacte.
  • `hostnamectl` affiche le nom, le type de machine et quelques informations système.
  • `ip -br addr` liste les interfaces et adresses IP sous une forme courte.
  • `ip route` montre la passerelle utilisée et les routes connues.
  • `free -h` affiche RAM et swap dans une unité lisible.
  • `df -h` indique l’espace disque libre par point de montage.

Appliquer cette étape avec une trace simple

Pour cette machine virtuelle, on écrit ce que l’on va faire, on exécute les vérifications, puis on garde une note datée.

Debian / Ubuntu
mkdir -p ~/newscloud-notes
printf '%s\n' "Faire l’inventaire complet" > ~/newscloud-notes/etape.txt
systemctl --failed
journalctl -p warning -n 50 --no-pager
cat ~/newscloud-notes/etape.txt
Ce que font les commandes
  • `mkdir -p` crée le dossier demandé sans erreur s’il existe déjà.
  • `printf` écrit une note ou un fichier de contrôle avec un format prévisible.
  • `systemctl --failed` liste les services en échec pour repérer un problème global.
  • `journalctl` lit les journaux systemd ; l’option `--no-pager` évite un affichage interactif.
  • `cat ~/newscloud-notes/etape.txt` exécute l’action indiquée ; lisez la sortie avant de passer à la commande suivante.

Créer une sauvegarde lisible et restaurable

Cette base sauvegarde la configuration et un dossier applicatif. Adaptez /srv/app au chemin réel de votre service.

Debian / Ubuntu
sudo mkdir -p /root/backups
sudo tar -czf /root/backups/etc-$(date +%F).tar.gz /etc
sudo tar -czf /root/backups/app-$(date +%F).tar.gz /srv/app
ls -lh /root/backups
sudo tar -tzf /root/backups/etc-$(date +%F).tar.gz | head
Ce que font les commandes
  • `mkdir -p` crée le dossier demandé sans erreur s’il existe déjà.
  • `tar -czf` crée une archive compressée.
  • `tar -czf` crée une archive compressée.
  • `ls -lh /root/backups` exécute l’action indiquée ; lisez la sortie avant de passer à la commande suivante.
  • `tar -tzf` liste le contenu d’une archive sans l’extraire.

Base outils Debian / Ubuntu

apt installe les utilitaires utiles, puis systemctl et journalctl vérifient que la machine reste saine.

Debian / Ubuntu
sudo apt update
sudo apt install -y curl vim rsync
systemctl --failed
journalctl -p warning -n 50 --no-pager
Ce que font les commandes
  • `apt update` recharge la liste des paquets Debian/Ubuntu disponibles.
  • `apt install` installe les paquets indiqués depuis les dépôts configurés.
  • `systemctl --failed` liste les services en échec pour repérer un problème global.
  • `journalctl` lit les journaux systemd ; l’option `--no-pager` évite un affichage interactif.

Variantes et attention

  • Les commandes de ce guide sont adaptées pour Debian / Ubuntu. Si votre image est une autre famille Linux, gardez la logique mais remplacez le gestionnaire de paquets et les noms de services.
  • En VM, vous contrôlez le système complet. Vous pouvez agir sur le noyau, le pare-feu et les volumes, mais vous êtes aussi responsable des mises à jour et de l’exposition réseau.
  • Niveau avancé : adaptez les chemins, noms de services et ports à votre application. Ne copiez pas les commandes sans remplacer les valeurs exemples.

Vérifications

  • La commande `systemctl --failed` ne doit pas afficher de service critique en échec.
  • La commande `df -h` doit montrer assez d’espace libre sur `/`, `/var` et les volumes applicatifs.
  • L’archive doit pouvoir être listée avec `tar -tzf`.
  • Un fichier restauré en test doit conserver son contenu et ses droits utiles.

Étape 2

Préparer la destination sans couper

Installez la nouvelle VM et ses dépendances pendant que l’ancienne production reste active.

Observer la machine avant de changer quoi que ce soit

Ces commandes affichent la distribution, le nom de la machine, les interfaces réseau, les routes, la mémoire et l’espace disque. Elles ne modifient rien.

Debian / Ubuntu
cat /etc/os-release
hostnamectl
ip -br addr
ip route
free -h
df -h
Ce que font les commandes
  • `cat /etc/os-release` affiche la distribution et sa version exacte.
  • `hostnamectl` affiche le nom, le type de machine et quelques informations système.
  • `ip -br addr` liste les interfaces et adresses IP sous une forme courte.
  • `ip route` montre la passerelle utilisée et les routes connues.
  • `free -h` affiche RAM et swap dans une unité lisible.
  • `df -h` indique l’espace disque libre par point de montage.

Appliquer cette étape avec une trace simple

Pour cette machine virtuelle, on écrit ce que l’on va faire, on exécute les vérifications, puis on garde une note datée.

Debian / Ubuntu
mkdir -p ~/newscloud-notes
printf '%s\n' "Préparer la destination sans couper" > ~/newscloud-notes/etape.txt
systemctl --failed
journalctl -p warning -n 50 --no-pager
cat ~/newscloud-notes/etape.txt
Ce que font les commandes
  • `mkdir -p` crée le dossier demandé sans erreur s’il existe déjà.
  • `printf` écrit une note ou un fichier de contrôle avec un format prévisible.
  • `systemctl --failed` liste les services en échec pour repérer un problème global.
  • `journalctl` lit les journaux systemd ; l’option `--no-pager` évite un affichage interactif.
  • `cat ~/newscloud-notes/etape.txt` exécute l’action indiquée ; lisez la sortie avant de passer à la commande suivante.

Créer une sauvegarde lisible et restaurable

Cette base sauvegarde la configuration et un dossier applicatif. Adaptez /srv/app au chemin réel de votre service.

Debian / Ubuntu
sudo mkdir -p /root/backups
sudo tar -czf /root/backups/etc-$(date +%F).tar.gz /etc
sudo tar -czf /root/backups/app-$(date +%F).tar.gz /srv/app
ls -lh /root/backups
sudo tar -tzf /root/backups/etc-$(date +%F).tar.gz | head
Ce que font les commandes
  • `mkdir -p` crée le dossier demandé sans erreur s’il existe déjà.
  • `tar -czf` crée une archive compressée.
  • `tar -czf` crée une archive compressée.
  • `ls -lh /root/backups` exécute l’action indiquée ; lisez la sortie avant de passer à la commande suivante.
  • `tar -tzf` liste le contenu d’une archive sans l’extraire.

Base outils Debian / Ubuntu

apt installe les utilitaires utiles, puis systemctl et journalctl vérifient que la machine reste saine.

Debian / Ubuntu
sudo apt update
sudo apt install -y curl vim rsync
systemctl --failed
journalctl -p warning -n 50 --no-pager
Ce que font les commandes
  • `apt update` recharge la liste des paquets Debian/Ubuntu disponibles.
  • `apt install` installe les paquets indiqués depuis les dépôts configurés.
  • `systemctl --failed` liste les services en échec pour repérer un problème global.
  • `journalctl` lit les journaux systemd ; l’option `--no-pager` évite un affichage interactif.

Variantes et attention

  • Les commandes de ce guide sont adaptées pour Debian / Ubuntu. Si votre image est une autre famille Linux, gardez la logique mais remplacez le gestionnaire de paquets et les noms de services.
  • En VM, vous contrôlez le système complet. Vous pouvez agir sur le noyau, le pare-feu et les volumes, mais vous êtes aussi responsable des mises à jour et de l’exposition réseau.
  • Niveau avancé : adaptez les chemins, noms de services et ports à votre application. Ne copiez pas les commandes sans remplacer les valeurs exemples.

Vérifications

  • La commande `systemctl --failed` ne doit pas afficher de service critique en échec.
  • La commande `df -h` doit montrer assez d’espace libre sur `/`, `/var` et les volumes applicatifs.
  • L’archive doit pouvoir être listée avec `tar -tzf`.
  • Un fichier restauré en test doit conserver son contenu et ses droits utiles.

Étape 3

Tester avec un nom temporaire

Un domaine de test ou un fichier hosts permet de valider l’application avant la bascule DNS.

Observer la machine avant de changer quoi que ce soit

Ces commandes affichent la distribution, le nom de la machine, les interfaces réseau, les routes, la mémoire et l’espace disque. Elles ne modifient rien.

Debian / Ubuntu
cat /etc/os-release
hostnamectl
ip -br addr
ip route
free -h
df -h
Ce que font les commandes
  • `cat /etc/os-release` affiche la distribution et sa version exacte.
  • `hostnamectl` affiche le nom, le type de machine et quelques informations système.
  • `ip -br addr` liste les interfaces et adresses IP sous une forme courte.
  • `ip route` montre la passerelle utilisée et les routes connues.
  • `free -h` affiche RAM et swap dans une unité lisible.
  • `df -h` indique l’espace disque libre par point de montage.

Appliquer cette étape avec une trace simple

Pour cette machine virtuelle, on écrit ce que l’on va faire, on exécute les vérifications, puis on garde une note datée.

Debian / Ubuntu
mkdir -p ~/newscloud-notes
printf '%s\n' "Tester avec un nom temporaire" > ~/newscloud-notes/etape.txt
systemctl --failed
journalctl -p warning -n 50 --no-pager
cat ~/newscloud-notes/etape.txt
Ce que font les commandes
  • `mkdir -p` crée le dossier demandé sans erreur s’il existe déjà.
  • `printf` écrit une note ou un fichier de contrôle avec un format prévisible.
  • `systemctl --failed` liste les services en échec pour repérer un problème global.
  • `journalctl` lit les journaux systemd ; l’option `--no-pager` évite un affichage interactif.
  • `cat ~/newscloud-notes/etape.txt` exécute l’action indiquée ; lisez la sortie avant de passer à la commande suivante.

Créer une sauvegarde lisible et restaurable

Cette base sauvegarde la configuration et un dossier applicatif. Adaptez /srv/app au chemin réel de votre service.

Debian / Ubuntu
sudo mkdir -p /root/backups
sudo tar -czf /root/backups/etc-$(date +%F).tar.gz /etc
sudo tar -czf /root/backups/app-$(date +%F).tar.gz /srv/app
ls -lh /root/backups
sudo tar -tzf /root/backups/etc-$(date +%F).tar.gz | head
Ce que font les commandes
  • `mkdir -p` crée le dossier demandé sans erreur s’il existe déjà.
  • `tar -czf` crée une archive compressée.
  • `tar -czf` crée une archive compressée.
  • `ls -lh /root/backups` exécute l’action indiquée ; lisez la sortie avant de passer à la commande suivante.
  • `tar -tzf` liste le contenu d’une archive sans l’extraire.

Base outils Debian / Ubuntu

apt installe les utilitaires utiles, puis systemctl et journalctl vérifient que la machine reste saine.

Debian / Ubuntu
sudo apt update
sudo apt install -y curl vim rsync
systemctl --failed
journalctl -p warning -n 50 --no-pager
Ce que font les commandes
  • `apt update` recharge la liste des paquets Debian/Ubuntu disponibles.
  • `apt install` installe les paquets indiqués depuis les dépôts configurés.
  • `systemctl --failed` liste les services en échec pour repérer un problème global.
  • `journalctl` lit les journaux systemd ; l’option `--no-pager` évite un affichage interactif.

Variantes et attention

  • Les commandes de ce guide sont adaptées pour Debian / Ubuntu. Si votre image est une autre famille Linux, gardez la logique mais remplacez le gestionnaire de paquets et les noms de services.
  • En VM, vous contrôlez le système complet. Vous pouvez agir sur le noyau, le pare-feu et les volumes, mais vous êtes aussi responsable des mises à jour et de l’exposition réseau.
  • Niveau avancé : adaptez les chemins, noms de services et ports à votre application. Ne copiez pas les commandes sans remplacer les valeurs exemples.

Vérifications

  • La commande `systemctl --failed` ne doit pas afficher de service critique en échec.
  • La commande `df -h` doit montrer assez d’espace libre sur `/`, `/var` et les volumes applicatifs.
  • L’archive doit pouvoir être listée avec `tar -tzf`.
  • Un fichier restauré en test doit conserver son contenu et ses droits utiles.

Étape 4

Planifier la synchronisation finale

Réduisez la fenêtre où les données changent des deux côtés. Une source en lecture seule évite les divergences.

Observer la machine avant de changer quoi que ce soit

Ces commandes affichent la distribution, le nom de la machine, les interfaces réseau, les routes, la mémoire et l’espace disque. Elles ne modifient rien.

Debian / Ubuntu
cat /etc/os-release
hostnamectl
ip -br addr
ip route
free -h
df -h
Ce que font les commandes
  • `cat /etc/os-release` affiche la distribution et sa version exacte.
  • `hostnamectl` affiche le nom, le type de machine et quelques informations système.
  • `ip -br addr` liste les interfaces et adresses IP sous une forme courte.
  • `ip route` montre la passerelle utilisée et les routes connues.
  • `free -h` affiche RAM et swap dans une unité lisible.
  • `df -h` indique l’espace disque libre par point de montage.

Tester l’isolation réseau

On teste la passerelle autorisée, puis une cible LAN qui doit rester bloquée. Remplacez les IP par votre plan réseau.

Debian / Ubuntu
ip route
ping -c 3 10.31.254.254
ping -c 3 192.168.4.8
curl -m 3 http://192.168.4.8:8006
sudo nft list ruleset
Ce que font les commandes
  • `ip route` montre la passerelle utilisée et les routes connues.
  • `ping -c 3 10.31.254.254` exécute l’action indiquée ; lisez la sortie avant de passer à la commande suivante.
  • `ping -c 3 192.168.4.8` exécute l’action indiquée ; lisez la sortie avant de passer à la commande suivante.
  • `curl` teste une URL depuis la machine elle-même.
  • `nft list ruleset` affiche les règles nftables réellement chargées.

Créer une sauvegarde lisible et restaurable

Cette base sauvegarde la configuration et un dossier applicatif. Adaptez /srv/app au chemin réel de votre service.

Debian / Ubuntu
sudo mkdir -p /root/backups
sudo tar -czf /root/backups/etc-$(date +%F).tar.gz /etc
sudo tar -czf /root/backups/app-$(date +%F).tar.gz /srv/app
ls -lh /root/backups
sudo tar -tzf /root/backups/etc-$(date +%F).tar.gz | head
Ce que font les commandes
  • `mkdir -p` crée le dossier demandé sans erreur s’il existe déjà.
  • `tar -czf` crée une archive compressée.
  • `tar -czf` crée une archive compressée.
  • `ls -lh /root/backups` exécute l’action indiquée ; lisez la sortie avant de passer à la commande suivante.
  • `tar -tzf` liste le contenu d’une archive sans l’extraire.

Base outils Debian / Ubuntu

apt installe les utilitaires utiles, puis systemctl et journalctl vérifient que la machine reste saine.

Debian / Ubuntu
sudo apt update
sudo apt install -y curl vim rsync
systemctl --failed
journalctl -p warning -n 50 --no-pager
Ce que font les commandes
  • `apt update` recharge la liste des paquets Debian/Ubuntu disponibles.
  • `apt install` installe les paquets indiqués depuis les dépôts configurés.
  • `systemctl --failed` liste les services en échec pour repérer un problème global.
  • `journalctl` lit les journaux systemd ; l’option `--no-pager` évite un affichage interactif.

Variantes et attention

  • Les commandes de ce guide sont adaptées pour Debian / Ubuntu. Si votre image est une autre famille Linux, gardez la logique mais remplacez le gestionnaire de paquets et les noms de services.
  • En VM, vous contrôlez le système complet. Vous pouvez agir sur le noyau, le pare-feu et les volumes, mais vous êtes aussi responsable des mises à jour et de l’exposition réseau.
  • Niveau avancé : adaptez les chemins, noms de services et ports à votre application. Ne copiez pas les commandes sans remplacer les valeurs exemples.

Vérifications

  • La commande `systemctl --failed` ne doit pas afficher de service critique en échec.
  • La commande `df -h` doit montrer assez d’espace libre sur `/`, `/var` et les volumes applicatifs.
  • L’archive doit pouvoir être listée avec `tar -tzf`.
  • Un fichier restauré en test doit conserver son contenu et ses droits utiles.

Étape 5

Garder un retour arrière

L’ancienne VM doit rester disponible jusqu’à validation. Couper trop tôt retire le filet de sécurité.

Observer la machine avant de changer quoi que ce soit

Ces commandes affichent la distribution, le nom de la machine, les interfaces réseau, les routes, la mémoire et l’espace disque. Elles ne modifient rien.

Debian / Ubuntu
cat /etc/os-release
hostnamectl
ip -br addr
ip route
free -h
df -h
Ce que font les commandes
  • `cat /etc/os-release` affiche la distribution et sa version exacte.
  • `hostnamectl` affiche le nom, le type de machine et quelques informations système.
  • `ip -br addr` liste les interfaces et adresses IP sous une forme courte.
  • `ip route` montre la passerelle utilisée et les routes connues.
  • `free -h` affiche RAM et swap dans une unité lisible.
  • `df -h` indique l’espace disque libre par point de montage.

Appliquer cette étape avec une trace simple

Pour cette machine virtuelle, on écrit ce que l’on va faire, on exécute les vérifications, puis on garde une note datée.

Debian / Ubuntu
mkdir -p ~/newscloud-notes
printf '%s\n' "Garder un retour arrière" > ~/newscloud-notes/etape.txt
systemctl --failed
journalctl -p warning -n 50 --no-pager
cat ~/newscloud-notes/etape.txt
Ce que font les commandes
  • `mkdir -p` crée le dossier demandé sans erreur s’il existe déjà.
  • `printf` écrit une note ou un fichier de contrôle avec un format prévisible.
  • `systemctl --failed` liste les services en échec pour repérer un problème global.
  • `journalctl` lit les journaux systemd ; l’option `--no-pager` évite un affichage interactif.
  • `cat ~/newscloud-notes/etape.txt` exécute l’action indiquée ; lisez la sortie avant de passer à la commande suivante.

Créer une sauvegarde lisible et restaurable

Cette base sauvegarde la configuration et un dossier applicatif. Adaptez /srv/app au chemin réel de votre service.

Debian / Ubuntu
sudo mkdir -p /root/backups
sudo tar -czf /root/backups/etc-$(date +%F).tar.gz /etc
sudo tar -czf /root/backups/app-$(date +%F).tar.gz /srv/app
ls -lh /root/backups
sudo tar -tzf /root/backups/etc-$(date +%F).tar.gz | head
Ce que font les commandes
  • `mkdir -p` crée le dossier demandé sans erreur s’il existe déjà.
  • `tar -czf` crée une archive compressée.
  • `tar -czf` crée une archive compressée.
  • `ls -lh /root/backups` exécute l’action indiquée ; lisez la sortie avant de passer à la commande suivante.
  • `tar -tzf` liste le contenu d’une archive sans l’extraire.

Base outils Debian / Ubuntu

apt installe les utilitaires utiles, puis systemctl et journalctl vérifient que la machine reste saine.

Debian / Ubuntu
sudo apt update
sudo apt install -y curl vim rsync
systemctl --failed
journalctl -p warning -n 50 --no-pager
Ce que font les commandes
  • `apt update` recharge la liste des paquets Debian/Ubuntu disponibles.
  • `apt install` installe les paquets indiqués depuis les dépôts configurés.
  • `systemctl --failed` liste les services en échec pour repérer un problème global.
  • `journalctl` lit les journaux systemd ; l’option `--no-pager` évite un affichage interactif.

Variantes et attention

  • Les commandes de ce guide sont adaptées pour Debian / Ubuntu. Si votre image est une autre famille Linux, gardez la logique mais remplacez le gestionnaire de paquets et les noms de services.
  • En VM, vous contrôlez le système complet. Vous pouvez agir sur le noyau, le pare-feu et les volumes, mais vous êtes aussi responsable des mises à jour et de l’exposition réseau.
  • Niveau avancé : adaptez les chemins, noms de services et ports à votre application. Ne copiez pas les commandes sans remplacer les valeurs exemples.

Vérifications

  • La commande `systemctl --failed` ne doit pas afficher de service critique en échec.
  • La commande `df -h` doit montrer assez d’espace libre sur `/`, `/var` et les volumes applicatifs.
  • L’archive doit pouvoir être listée avec `tar -tzf`.
  • Un fichier restauré en test doit conserver son contenu et ses droits utiles.

Checklist finale

  • Inventaire complet
  • Test avant DNS
  • Plan retour