Passer au contenu principal Passer à la navigation Passer au pied de page

VM expérimentales

Provisionner des clusters de VM locaux pour le développement et les tests avec rdc ops.

Experimental VMs

Provisionnez des clusters de VM locaux sur votre poste de travail pour le développement et les tests, aucun fournisseur cloud externe requis.

Prérequis

rdc ops nécessite l’adaptateur local. Il n’est pas disponible avec l’adaptateur cloud.

rdc ops check

Vue d’ensemble

Les commandes rdc ops vous permettent de créer et de gérer des clusters de VM expérimentaux en local. Il s’agit de la même infrastructure utilisée par le pipeline CI pour les tests d’intégration, désormais disponible pour l’expérimentation pratique.

Cas d’usage :

  • Tester les déploiements Rediacc sans fournisseurs VM externes (Linode, Vultr, etc.)
  • Développer et déboguer des configurations de dépôts en local
  • Apprendre la plateforme dans un environnement totalement isolé
  • Exécuter des tests d’intégration sur votre poste de travail

Compatibilité des plateformes

PlateformeArchitectureBackendStatut
Linuxx86_64KVM (libvirt)Testé en CI
macOSIntelQEMU + HVFTesté en CI
LinuxARM64KVM (libvirt)Supporté (non testé en CI)
macOSARM (Apple Silicon)QEMU + HVFSupporté (non testé en CI)
Windowsx86_64 / ARM64Hyper-VPlanifié

Linux (KVM) utilise libvirt pour la virtualisation matérielle native avec une mise en réseau bridge.

macOS (QEMU) utilise QEMU avec le framework Hypervisor d’Apple (HVF) pour des performances quasi-natives, avec une mise en réseau en mode utilisateur et une redirection de port SSH.

Windows (Hyper-V) est planifié. Voir issue #380 pour les détails. Nécessite Windows Pro/Enterprise.

Prérequis et configuration

Linux

# Installer les prérequis automatiquement
rdc ops setup

# Ou manuellement :
sudo apt install libvirt-daemon-system virtinst qemu-utils cloud-image-utils docker.io
sudo systemctl enable --now libvirtd

macOS

# Installer les prérequis automatiquement
rdc ops setup

# Ou manuellement :
brew install qemu cdrtools

Vérifier la configuration

rdc ops check

Cette commande effectue des vérifications spécifiques à la plateforme et rapporte succès/échec pour chaque prérequis.

Démarrage rapide

# 1. Vérifier les prérequis
rdc ops check

# 2. Provisionner un cluster minimal (bridge + 1 worker)
rdc ops up --basic

# 3. Vérifier l'état des VM
rdc ops status

# 4. Se connecter en SSH à la VM bridge
rdc ops ssh --vm-id 1

# 4b. Ou exécuter une commande directement
rdc ops ssh --vm-id 1 -c hostname

# 5. Démanteler
rdc ops down

Composition du cluster

Par défaut, rdc ops up provisionne :

VMIDRôle
Bridge1Nœud principal, exécute le service bridge Rediacc
Worker 111Nœud worker pour les déploiements de dépôts
Worker 212Nœud worker pour les déploiements de dépôts

Utilisez l’option --basic pour ne provisionner que le bridge et le premier worker (IDs 1 et 11).

Utilisez --skip-orchestration pour provisionner des VM sans démarrer les services Rediacc, utile pour tester la couche VM de manière isolée.

Configuration

La VM bridge utilise des ressources par défaut plus petites que les VM workers :

Rôle VMCPUsRAMDisque
Bridge11024 Mo8 Go
Worker24096 Mo16 Go

Les variables d’environnement remplacent les ressources des VM workers :

VariablePar défautDescription
VM_CPU2Cœurs CPU par VM worker
VM_RAM4096RAM en Mo par VM worker
VM_DSK16Taille du disque en Go par VM worker
VM_NET_BASE192.168.111Base réseau (KVM uniquement)
RENET_DATA_DIR~/.renetRépertoire de données pour les disques et la configuration des VM

Référence des commandes

CommandeDescription
rdc ops setupInstaller les prérequis de la plateforme (KVM ou QEMU)
rdc ops checkVérifier que les prérequis sont installés et fonctionnels
rdc ops up [options]Provisionner le cluster de VM
rdc ops downDétruire toutes les VM et nettoyer
rdc ops statusAfficher le statut de toutes les VM
rdc ops ssh <vm-id> [command...]Se connecter en SSH à une VM, ou y exécuter une commande

Options de rdc ops up

OptionDescription
--basicCluster minimal (bridge + 1 worker)
--liteIgnorer le provisionnement des VM (clés SSH uniquement)
--forceForcer la recréation des VM existantes
--parallelProvisionner les VM en parallèle
--skip-orchestrationVM uniquement, sans services Rediacc
--backend <kvm|qemu>Remplacer le backend auto-détecté
--os <name>Image OS (par défaut : ubuntu-24.04)
--debugSortie détaillée

Différences selon la plateforme

Linux (KVM)

  • Utilise libvirt pour la gestion du cycle de vie des VM
  • Mise en réseau bridge, les VM obtiennent des IP sur un réseau virtuel (192.168.111.x)
  • SSH direct vers les IP des VM
  • Nécessite /dev/kvm et le service libvirtd

macOS (QEMU + HVF)

  • Utilise des processus QEMU gérés via des fichiers PID
  • Mise en réseau en mode utilisateur avec redirection de port SSH (localhost:222XX)
  • SSH via les ports redirigés, pas les IP directes
  • ISOs cloud-init créés via mkisofs

Dépannage

Mode debug

Ajoutez --debug à n’importe quelle commande pour une sortie détaillée :

rdc ops up --basic --debug

Problèmes courants

KVM non disponible (Linux)

  • Vérifiez que /dev/kvm existe : ls -la /dev/kvm
  • Activez la virtualisation dans le BIOS/UEFI
  • Chargez le module noyau : sudo modprobe kvm_intel ou sudo modprobe kvm_amd

libvirtd non lancé (Linux)

sudo systemctl enable --now libvirtd

QEMU introuvable (macOS)

brew install qemu cdrtools

Les VM ne démarrent pas

  • Vérifiez l’espace disque dans ~/.renet/disks/
  • Exécutez rdc ops check pour vérifier tous les prérequis
  • Essayez rdc ops down puis rdc ops up --force