Aller au contenu
Conteneurs & Orchestration medium

Migrer de LXD vers Incus avec lxd-to-incus

6 min de lecture

logo incus

Vous venez de LXD et voulez passer à Incus ? L'outil lxd-to-incus, livré avec Incus, migre toute l'installation en place : instances, images, profils, réseaux et stockage. Ce guide détaille les prérequis, la procédure et surtout les pièges concrets remontés du terrain (version de LXD, mot de passe de confiance, changement de suffixe DNS, downtime) qui font échouer une migration mal préparée. Pour les administrateurs LXD qui basculent.

  • Les prérequis avant de lancer la migration.
  • La procédure lxd-to-incus.
  • Les retouches après bascule (groupes, config CLI, DNS).
  • Les pièges qui font échouer la migration.
  • Incus installé mais NON initialisé : n'exécutez pas incus admin init. L'outil copie lui-même les données et la configuration depuis LXD ; il a seulement besoin que le service Incus soit démarré.

  • Une version de LXD au plus 5.21.99 : au-delà, lxd-to-incus refuse de migrer.

  • Si vos pools utilisent ZFS, le paquet zfsutils-linux doit être installé (classique du snap LXD).

  • core.trust_password désactivé côté LXD, sinon la connexion échoue :

    Fenêtre de terminal
    lxc config unset core.trust_password

Premier piège, avant même de commencer : l'outil lxd-to-incus n'est pas dans le paquet incus. Sur les dépôts Zabbly, il est fourni par le paquet incus-extra. Sans lui, la commande renvoie lxd-to-incus: command not found alors qu'Incus est bien installé :

Fenêtre de terminal
sudo apt install incus-extra
which lxd-to-incus # /usr/bin/lxd-to-incus

Une fois les prérequis réunis, la migration tient en une commande :

Fenêtre de terminal
sudo lxd-to-incus

L'outil analyse l'installation LXD, vérifie la compatibilité, puis copie les données vers Incus. Il gère aussi les installations LXD en cluster. À la fin, LXD est désactivé au profit d'Incus. Voici la sortie réelle d'une migration d'un LXD 5.0.2 vers un Incus 7.0.0 (une instance webapp à migrer) :

=> Looking for source server
==> Detected: .deb package
=> Looking for target server
==> Detected: systemd
=> Checking server versions
==> Source version: 5.0.2
==> Target version: 7.0.0
=> Validating version compatibility
=> Checking that the source server isn't empty
=> Checking that the target server is empty
=> Validating source server configuration
=> Stopping the source server
=> Stopping the target server
=> Wiping the target server
=> Migrating the data
=> Migrating database
=> Writing database patch
=> Starting the target server
=> Checking the target server
=> Uninstalling the source server

L'outil refuse de migrer si la cible n'est pas vide (d'où la règle « ne pas initialiser Incus avant ») ou si la source est vide. Après le Uninstalling the source server, le service lxd est inactif et Incus a repris la main.

La vérification confirme que l'instance a bien basculé, en conservant son IP et sa configuration (ici la clé user.role=frontend posée côté LXD) :

Fenêtre de terminal
incus list
incus config get webapp user.role
+--------+---------+-----------------------+-----------+
| NAME | STATE | IPV4 | TYPE |
+--------+---------+-----------------------+-----------+
| webapp | RUNNING | 10.181.216.145 (eth0) | CONTAINER |
+--------+---------+-----------------------+-----------+
frontend

L'instance tourne toujours, avec la même adresse qu'avant la migration : lxd-to-incus a repris le disque, la config et le réseau sans les recréer. Le pool de stockage default (driver dir dans ce lab) est repris tel quel.

La bascule terminée, plusieurs éléments ne sont pas migrés automatiquement et demandent une intervention manuelle.

  • Groupes système : ré-ajoutez les utilisateurs du groupe lxd dans incus-admin (sudo usermod -aG incus-admin <user>), sinon permission denied.
  • Configuration de la CLI : recopiez ~/.config/lxc/ (ou ~/snap/lxd/common/config/) vers ~/.config/incus/ pour retrouver vos remotes.
  • Suffixe DNS : le bridge lxdbr0 persiste, mais le suffixe DNS passe de .lxd à .incus. Tout nom d'hôte en dur (.lxd) dans vos configurations ou scripts est à auditer et corriger.
  • L'outil lxd-to-incus vit dans le paquet incus-extra, pas incus : à installer d'abord.
  • N'initialisez pas Incus avant la migration : lxd-to-incus s'en charge, il faut juste le service démarré (la cible doit être vide).
  • LXD doit être en version ≤ 5.21.99, core.trust_password désactivé, zfsutils-linux présent pour ZFS.
  • La migration arrête tout et n'est pas réversible : exportez vos instances critiques d'abord.
  • L'outil peut être silencieux sur des échecs : vérifiez l'état réel après.
  • Retouches manuelles : groupe incus-admin, config CLI ~/.config/incus/, suffixe DNS .lxd.incus.

FAQ : questions fréquentes sur la migration LXD vers Incus

Section intitulée « FAQ : questions fréquentes sur la migration LXD vers Incus »

Ce site vous est utile ?

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

Je maintiens +700 guides gratuits, sans pub ni tracking. Un soutien, même symbolique, m'aide à couvrir l'hébergement et à garder ces ressources gratuites. Merci pour votre appui.

Le formulaire ne s'affiche pas ? Ouvrir Ko-fi dans un onglet.

Abonnez-vous et suivez mon actualité DevSecOps sur LinkedIn