Fiche Multipass — Interface en ligne de commande (CLI)¶
Vue d'ensemble¶
Multipass est un gestionnaire léger de machines virtuelles (VM) Ubuntu, piloté principalement par ligne de commande. La CLI permet de créer, démarrer, connecter, configurer et supprimer des instances Ubuntu en quelques secondes.
Syntaxe de base :
Options globales :
| Option | Description |
|---|---|
-h, --help |
Affiche l'aide |
-v, --verbose |
Augmente le niveau de journalisation (répétable jusqu'à 3 fois : -v, -vv, -vvv) |
Commandes de création et lancement¶
multipass launch¶
Crée et démarre une nouvelle instance Ubuntu. Si aucun nom n'est fourni, un nom aléatoire est généré .
Options principales :
| Option | Description |
|---|---|
--name, -n <nom> |
Nom de l'instance |
--cpus, -c <nombre> |
Nombre de cœurs CPU |
--memory, -m <taille> |
RAM allouée (ex. 2G, 4G) |
--disk, -d <taille> |
Espace disque (ex. 10G, 20G) |
--cloud-init <fichier> |
Fichier de configuration cloud-init |
--network <spec> |
Ajouter une interface réseau |
--bridged |
Ajouter une interface réseau en mode bridge |
Exemples :
# Lancement basique avec un nom
multipass launch --name myvm
# Version Ubuntu spécifique
multipass launch 22.04 --name myvm
# Avec ressources personnalisées
multipass launch --name myvm --cpus 2 --memory 4G --disk 20G
# Instance "primary" (montage automatique du répertoire home)
multipass launch --name primary
L'instance nommée primary devient l'instance par défaut pour plusieurs commandes et monte automatiquement $HOME .
multipass find¶
Affiche les images Ubuntu disponibles au téléchargement .
Commandes de gestion des instances¶
multipass list (alias : ls)¶
Liste toutes les instances avec leur état et leur adresse IP .
multipass list
multipass list --format csv # Sortie CSV pour scripting
multipass list --snapshots # Liste les snapshots
États possibles : Running, Stopped, Suspended, Deleted (corbeille, récupérable tant que purge n'a pas été exécuté) .
multipass info¶
Affiche les détails d'une ou plusieurs instances (IP, ressources, état, etc.) .
multipass start¶
Démarre une instance arrêtée .
multipass stop¶
Arrête une instance proprement (données préservées) .
multipass restart¶
Redémarre une instance .
multipass suspend¶
Suspend une instance (état mémoire sauvegardé sur disque, reprise plus rapide qu'un boot complet) .
Commandes de suppression et récupération¶
multipass delete¶
Déplace une instance vers la corbeille (suppression réversible) .
multipass recover¶
Restaure une instance depuis la corbeille .
multipass purge¶
Supprime définitivement toutes les instances présentes dans la corbeille .
Suppression complète (deux étapes) :
Commandes d'accès et d'exécution¶
multipass shell¶
Ouvre un shell interactif dans une instance en cours d'exécution .
multipass exec¶
Exécute une commande non-interactive dans une instance .
multipass exec <instance> -- <commande>
multipass exec myvm -- ls -la /home
multipass exec myvm -- sudo apt update
Commandes de transfert et montage¶
multipass transfer¶
Transfère des fichiers entre l'hôte et une instance .
multipass transfer <source> <instance>:<destination>
multipass transfer <instance>:<source> <destination>
multipass mount¶
Monte un répertoire local dans une instance .
Options de mappage UID/GID :
- --uid-map <hôte>:<instance>
- --gid-map <hôte>:<instance>
multipass umount¶
Démonte un répertoire monté dans une instance .
Snapshots (depuis v1.13)¶
Les snapshots ne sont possibles que sur une instance arrêtée .
# Arrêter d'abord l'instance
multipass stop myvm
# Créer un snapshot (nom automatique ou explicite)
multipass snapshot myvm
multipass snapshot myvm --name pre-upgrade --comment "avant mise à jour kernel"
# Lister les snapshots
multipass list --snapshots
# Restaurer un snapshot (format <instance>.<snapshot>)
multipass restore myvm.pre-upgrade
Commandes de configuration et d'authentification¶
multipass authenticate¶
Authentifie un client auprès du service Multipass .
multipass get / multipass set¶
Lit ou modifie une configuration Multipass .
multipass networks¶
Liste les interfaces réseau disponibles .
multipass help¶
Affiche l'aide générale ou détaillée d'une commande .
Automatisation et gestion de groupes¶
Multipass ne dispose pas de notion native de groupes ou de tags. Utilisez des conventions de nommage (ex. dev-, test-) combinées à des scripts shell pour gérer plusieurs instances .
Exemple : mettre à jour toutes les instances en cours d'exécution
for vm in $(multipass list --format csv | tail -n +2 | awk -F',' '$2=="Running"{print $1}'); do
multipass exec "$vm" -- sudo apt update -qq
multipass exec "$vm" -- sudo apt upgrade -y -qq
done
Exemple : démarrer toutes les instances préfixées par dev-
multipass list --format csv | tail -n +2 | awk -F',' '$1~/^dev-/{print $1}' | xargs -I{} multipass start {}
Récapitulatif des commandes¶
| Commande | Rôle |
|---|---|
launch |
Créer et démarrer une instance |
find |
Lister les images disponibles |
list (ls) |
Lister les instances |
info |
Détails d'une instance |
start |
Démarrer |
stop |
Arrêter |
restart |
Redémarrer |
suspend |
Suspendre |
delete |
Mettre à la corbeille |
recover |
Restaurer depuis la corbeille |
purge |
Supprimer définitivement |
shell |
Shell interactif |
exec |
Exécuter une commande |
transfer |
Transférer des fichiers |
mount / umount |
Monter / démonter un répertoire |
snapshot |
Créer un snapshot |
restore |
Restaurer un snapshot |
authenticate |
Authentifier un client |
get / set |
Configuration |
networks |
Interfaces réseau |
help |
Aide |
cloud-init¶
utilisation de multipass avec cloud-init
le cloud init est une méthodologie normalisé pour pré-configurer un serveur
générer une clef ssh¶
ssh-keygen -C vmuser -f multipass-ssh-key
se connecter : multipass info testvm -> donne l'IP
ssh vmuser@192.168.205.4 -i multipass-ssh-key -o StrictHostKeyChecking=no
le cloud init¶
multipass launch -n testvm --cloud-init cloud-init.yaml
le fichier cloud-init.yml
users:
- name: oscar
ssh-authorized-keys:
- ssh-rsa > (...)bRzT4YRrp+9E/3G0= oscar@LAPTOP-I5NEAUBD
sudo: ['ALL=(ALL) NOPASSWD:ALL']
groups: sudo
shell: /bin/bash
package_update: true
packages:
- python3
- git
#runcmd:
# - echo "$HOSTNAME" >> inventory/hosts
final_message: "L'instance est maintenant up depuis $UPTIME secondes"