Comment fiabiliser la synchronisation de dossiers entre l’hôte et une Vagrant box ?

Vagrant facilite l'utilisation de VirtualBox, mais impossible de lui passer la commande reboot sans perdre ses dossiers synchronisés !!

Vagrant avec Virtualbox

Vagrant permet de configurer des environnements de développement légers, reproductibles et portables. Utilisé en surcouche de VirtualBox, son interface en ligne de commandes en rend l’utilisation simple et efficace. Un des grands avantages de Vagrant est la synchronisation automatique du répertoire du Vagrantfile dans la machine virtuelle. Mais il est impossible de lui passer la commande reboot sans perdre ces dossiers syncronisés !!

En développement, les machines virtuelles se révèlent être particulièrement utiles et nous évitent de constament polluer notre environnement de travail. Lorsque l’on veut réinitialiser la machine virtuelle, il suffit de supprimer la Vagrant box et de la recréer en deux commandes:

% vagrant destroy
  % vagrant up

Dès la création de la box, le répertoire courant (qui contient aussi le Vagrantfile) est synchronisé avec /vagrant. Cela se révèle très pratique pour accéder à des fichiers de configuration personnalisés ou des scripts d’installation. Mais souvent, lorsque l’on provisionne une instance (virtuelle ou non), il est nécessaire de redémarrer.

Alors, si l’on veut garder ces dossiers synchronisés, il faurait sortir de la Vagrant et exécultervagrant reload. Mais cette procédure bien que simple peut être problématique! En effet, il existe aujourd’hui de nombreux outils pour aider au provisionnement, dont Ansible qui s’interface très bien avec Vagrant. En plus de l’automatisation, de tels processus garantissent la stricte identité des installations entre machines virtuelles et physiques. Mais souvent, on est contraint à redémarrer depuis la machine en cours d’installation, via la commande reboot. Les dossiers synchronisés sont alors perdus!

Logo Ansible

Les dossiers partagés sont gérés par VirtualBox, en utilisant entre autre un système de fichiers spécifique: vboxsf. Pour que l’invité soit en mesure d’utiliser ce système de fichiers, il faut au préalable y installer les additions invités (VirtualBox Guest Additions). Des pilotes additionnels permettent aussi l’intégration facile de périphériques dans la machine virtuelle.

Les dossiers syncronisés par vagrant consistent alors simplement en des points de montage. Une façon de les rendre résistants au redémarrage est de les écrire dans /etc/fstab, en ajoutant la ligne:

vagrant    /vagrant    vboxsf  rw  0   0

On note le type de système de fichiers vboxsf spécifique à virtualbox. Il suffit finalement d’exécuter

% mount vagrant

après chaque redémarrage pour retrouver ces dossiers partagés.

Réagissez