> vagrant up --provider=virtualbox --debug_

Vagrant : Pourquoi Windows exige BOX_VERSION et BOX_ARCH ?

Par Nicolas DELAHAYE | v.1974 | Architecte Solution

ERROR: AMBIGUOUS_BOX_METADATA_FOUND


Voici un scénario que j'ai vécu (et vous aussi probablement) : je pousse mon code sur Git. Mon Vagrantfile est propre. Je fais un vagrant up sur mon Mac M3 : tout fonctionne.

Mon collègue sous Windows clone le repo, lance la même commande et... CRASH.
> No matching provider found. Please specify box_version and box_arch.

Pourquoi cette différence de traitement ? Pourquoi Windows est-il l'élève difficile de la classe ? La réponse se trouve dans les entrailles de l'OS.

Pour comprendre, il faut revenir à la base. Linux et macOS sont des cousins : ils sont POSIX-compliant. Ils parlent la même langue (chemins de fichiers /, permissions, gestion des processus via fork/exec).

Windows est une bête différente (NTFS, chemins C:\, API Win32). Quand Vagrant essaie d'analyser le système pour "deviner" quoi faire, il se heurte à un mur de complexité sur Windows que Linux n'a pas.

Quand vous ne précisez rien dans le Vagrantfile, Vagrant doit faire un travail d'enquête (Inférence) :

Sur Linux / macOS :
Vagrant demande au noyau : "T'es qui ?".
Le noyau répond : "Je suis un Darwin arm64".
Vagrant regarde la Box : "J'ai une version compatible, je la prends."
👉 Succès automatique.
Sur Windows :
Vagrant fait face à plusieurs Hyperviseurs possibles (Hyper-V, VirtualBox, VMWare, WSL2). Les métadonnées système sont plus floues pour un outil né dans le monde Ruby/Linux.
Vagrant hésite : "Quelle architecture ? Quel Provider ? Quelle version exacte ?".
👉 Échec par prudence. Il vous demande de préciser.
  • Les Chemins de fichiers : Les métadonnées des Boxes sont stockées dans C:\Users\VotreNom\.vagrant.d\.... Les espaces ou caractères spéciaux dans les chemins Windows cassent souvent la lecture automatique des fichiers JSON de configuration.
  • L'Architecture : Windows ne rapporte pas son architecture (amd64 vs arm64) de la même manière standardisée que uname -m sous Unix. Vagrant ne peut pas garantir que la Box téléchargée tournera sur votre CPU.
  • Les Providers : Sur Windows, la cohabitation Hyper-V et VirtualBox est notoirement complexe. Vagrant a besoin de savoir explicitement quelle version de Box correspond à quel moteur de virtualisation.

Plutôt que de voir cela comme une contrainte Windows, voyez-le comme une discipline de reproductibilité.

En définissant ces variables, vous verrouillez votre environnement. Plus de "mise à jour magique" qui casse tout le lundi matin.

# Dans votre Vagrantfile
config.vm.box = "ubuntu/jammy64"
# Obligatoire pour Windows, recommandé pour tous :
config.vm.box_version = "202401.01.0"
config.vm.box_arch    = "amd64"

// RÉFÉRENCES OFFICIELLES :

[ EOF - Configuration Saved ]

Share This