Aller au contenu

Development

Gérer les versions de votre boîte Vagrant

Apprenez à gérer correctement les versions de vos boîtes Vagrant à l'aide de Vagrant Cloud. Ce guide étape par étape couvre l'ensemble du processus, de la configuration de votre Vagrantfile à la publication de boîtes versionnées, pour vous aider à maintenir des environnements de développement uniformes au sein de votre équipe et de vos projets.

5 min de lecture

Vue d’ensemble

Après avoir fait quelques essais avec la gestion des versions de Vagrant, j’ai décidé de rédiger ce tutoriel pour ceux qui s’y mettent pour la première fois. La documentation sur cette fonctionnalité et son utilisation est rare et éparpillée. Si vous avez des commentaires pour l’améliorer, n’hésitez pas à me les faire parvenir.

Vagrant

Vagrant est un outil qui permet de bâtir des environnements de développement complets. Grâce à un flux de travail facile à utiliser et à l’accent mis sur l’automatisation, Vagrant réduit le temps de mise en place des environnements de développement, rapproche le développement de la production et relègue au passé l’excuse du « ça fonctionne sur ma machine ».

Vagrant Cloud

Vagrant Cloud est un endroit où partager, découvrir et créer des environnements Vagrant. Pour le moment, Vagrant Cloud est en version bêta.

Utiliser une boîte personnalisée ou existante

Pour suivre ce tutoriel, il est recommandé d’avoir une boîte. Vous pouvez utiliser une boîte existante ou créer une boîte personnalisée. Que vous créiez une boîte ou en utilisiez une existante, vous n’avez rien de particulier à faire à la boîte pour mettre en place la gestion des versions.

Pour les besoins de ce tutoriel, j’utiliserai une boîte Ubuntu existante que j’ai créée avec Packer. Vous trouverez un exemple des gabarits utilisés dans mon projet GitHub, skoblenick/packer-examples.

Ajouter une version au Vagrantfile

Les modifications apportées à l’API de Vagrant dans les versions 1.5.0 et ultérieures ont ajouté la possibilité de gérer les versions. Les deux options dont vous devez principalement vous soucier sont :

  1. config.vm.box_version

    La version de la boîte à utiliser. Cette version doit correspondre à une version « Released » sur Vagrant Cloud.

  2. config.vm.box_check_update

    Si elle est réglée à true, Vagrant vérifiera s’il existe des mises à jour de la boîte configurée à chaque vagrant up.

Votre Vagrantfile contiendra quelque chose de semblable à ceci :

# -*- mode: ruby -*-
# vi: set ft=ruby :

Vagrant.require_version ">= 1.5.2"

Vagrant.configure("2") do |config|
  config.vm.box = "skoblenick/precise64"
  config.vm.box_version = "1.0.0"
  config.vm.box_check_update = true

  config.vm.provider "vmware_fusion" do |v, override|
    v.gui = false
  end

end

À ce stade, l’exécution de Vagrant échouera. Vagrant ne pourra pas trouver « skoblenick/precise64 » et vous obtiendrez donc une erreur 404 Not Found.

Espaces de noms des boîtes

Avant Vagrant 1.5.0, on faisait généralement référence à une boîte au moyen d’un chemin de fichier local ou d’une URL HTTP pointant vers la boîte hébergée.

Vagrant 1.5.0 a introduit les espaces de noms, qui suivent un modèle comme « <vagrantcloud_user>/<box_name> ». Vous pouvez voir cela comme un alias que Vagrant convertit en URL HTTP en interrogeant Vagrant Cloud. Cela ne signifie pas que votre boîte doit être stockée sur Vagrant Cloud. Dans la plupart des cas, seules les métadonnées qui définissent la boîte y sont stockées.

Créer un compte sur vagrantcloud.com

Vous devrez créer un compte sur Vagrant Cloud. Je ne détaillerai pas cette étape, car l’inscription est assez simple. Une fois votre compte créé et vérifié, ouvrez une session.

Définir une boîte sur Vagrant Cloud

Comme Vagrant Cloud est en version bêta, les étapes décrites ici pourraient changer. Les étapes suivantes permettent de créer une nouvelle boîte.

  1. Sélectionnez « Create Box » dans le menu de navigation principal.

  2. Remplissez les renseignements généraux sur votre boîte.

    • Dans mon cas, je nommerai ma boîte « precise64 ».
    • Je vais aussi rendre cette boîte privée, puisqu’elle résidera sur mon serveur Web de développement.
    • Remplissez tout autre renseignement que vous jugez nécessaire.
    • Cliquez sur le bouton « Create box ».
  3. L’étape suivante consiste à définir la version de votre boîte.

    • Vagrant recommande d’utiliser la gestion sémantique de version. Indiquez donc un numéro de version pour votre boîte.
    • Ajoutez une description si vous le souhaitez.
    • Cliquez sur le bouton « Create version ».
  4. Nous voulons ensuite ajouter les fournisseurs pris en charge par la boîte que nous définissons.

    • Cliquez sur le bouton « Create new provider ».
    • Entrez le nom de votre fournisseur. Dans mon cas, j’utilise VMware Fusion; j’entrerai donc « vmware_desktop ».
    • Cliquez sur le bouton « URL ».
      Le bouton URL affiche un champ pour l’URL de la boîte et un bouton pour ajouter le fournisseur.
    • Entrez l’URL de votre boîte. Dans mon cas, j’entrerai http://localhost/boxes/precise64-1.0.0_vmware.box.
    • Cliquez sur le bouton « Create provider ».
  5. Vous serez invité à modifier la version. Vous pouvez mettre à jour ce que vous avez saisi si vous le jugez nécessaire. L’élément important de cet écran est le bouton vert « Release now ».

    • Cliquez sur le bouton « Release now ». La boîte ne deviendra pas publique, mais son statut passera à actif. Les utilisateurs que nous ajouterons aux collaborateurs pourront ainsi commencer à utiliser la boîte. En tant que créateur de la boîte, nous n’avons pas besoin de nous ajouter aux collaborateurs.

Avant de télécharger la boîte, rappelez-vous que j’ai rendu ma boîte privée. Ce paramètre ajoute une étape supplémentaire : Vagrant doit savoir avec quel utilisateur ouvrir une session sur Vagrant Cloud.

vagrant login

Cette étape n’est pas nécessaire pour une boîte publique. Cependant, si vous avez créé une boîte privée comme nous l’avons fait ci-dessus, vous devrez exécuter la commande suivante dans le Terminal où vous exécuterez Vagrant.

username$ vagrant login
In a moment we'll ask for your username and password to Vagrant Cloud.
After authenticating, we will store an access token locally. Your
login details will be transmitted over a secure connection, and are
never stored on disk locally.

If you don't have a Vagrant Cloud account, sign up at vagrantcloud.com

Username or Email: user@example.com
Password (will be hidden):
You're now logged in!

vagrant up

Nous pouvons enfin exécuter vagrant up dans le Terminal : notre boîte sera téléchargée, clonée et lancée. Nous pouvons aussi simplement ajouter la boîte avec vagrant box add skoblenick/precise64.

Partager