Les invités microVM
Un invité microVM est un hôte DNF ordinaire (IP de zone, services, supervision) qui tourne dans une machine virtuelle légère, sur un autre hôte du parc : l’hyperviseur. DNF s’appuie sur microvm.nix 🡕 et cloud-hypervisor. Usage type : un espace IA clos par personne ou par équipe.
Déclarer un invité
Section intitulée « Déclarer un invité »-
Déclarer l’hôte
La feature
microvm-guestnomme l’hyperviseur, de la même zone. L’IP fixe est obligatoire : l’interface et l’adresse MAC en dérivent. Comme tout hôte, l’invité n’est supervisé qu’avec la featuremonitoring-node.etc/config.yaml hosts:- hostname: "espace1"zone: "maison:1.40"profile: "ai-space"features: ["microvm-guest:serveur", "monitoring-node"] -
Dimensionner
Facultatif, 2 vCPU et 4096 Mio par défaut.
usr/machines/espace1/configuration.nix {darkone.system.microvm.guest = {vcpu = 4;mem = 6144; # Mio};} -
Figer la version d’état
Un invité ne passe jamais par
just install: créer le fichier à la main, avec la version NixOS du premier déploiement.usr/machines/espace1/install/state.nix { system.stateVersion = "26.05"; } -
Initialiser ses secrets
L’invité ne lit que ses propres secrets : voir hôtes isolés.
Fenêtre de terminal just space-init espace1 -
Déployer l’hyperviseur
Fenêtre de terminal just generatejust apply serveur
Déployer et mettre à jour
Section intitulée « Déployer et mettre à jour »Un invité n’est pas une cible de déploiement : just apply <hyperviseur>
construit les invités, démarre les nouveaux et redémarre ceux qui ont changé.
Les invités démarrent avec l’hyperviseur.
| Élément | Emplacement |
|---|---|
| Données persistantes | /var/lib/microvms/<invité>/ sur l’hyperviseur, fermé à ses comptes sauf root (0770) et monté nosuid,nodev : un fichier setuid ou un périphérique créé par l’invité y reste inerte |
/persist, /var/lib, /home | Partages virtiofs de ce dossier |
Racine / | En mémoire, vidée à chaque démarrage |
| Store Nix | Celui de l’hyperviseur en lecture seule, plus une couche en mémoire pour ce que l’invité installe (nix shell, Home Manager), vidée à chaque démarrage |
Isolation réseau
Section intitulée « Isolation réseau »Chaque invité a sa propre interface vm-X-Y, routée en /32 par
l’hyperviseur, qui répond pour lui sur le LAN (proxy ARP). Le lien de
l’hyperviseur vers le LAN n’est pas modifié, il n’y a pas de pont.
| Flux | Autorisé |
|---|---|
| Invité → Internet | Oui |
| Invité → DNS de la passerelle | Oui |
| Invité → LAN, tailnet, autres invités | Non |
| Invité → hyperviseur | Non |
| Passerelle → invité | Oui (proxy, supervision) |
| Autre hôte → invité | Ping et SSH seulement |
Se connecter à un invité ?
Section intitulée « Se connecter à un invité ? »Comme tout hôte, depuis un poste d’administration : just enter <invité>.
Son nom est publié par le DNS des passerelles, qui doivent donc être
redéployées après l’ajout de l’invité.
Effacer un invité ?
Section intitulée « Effacer un invité ? »Le retirer de etc/config.yaml, déployer l’hyperviseur, puis supprimer
/var/lib/microvms/<invité>/ sur l’hyperviseur.