web-dev-qa-db-fra.com

Pourquoi devrais-je utiliser Vagrant au lieu de simplement VirtualBox?

J'utilise VirtualBox depuis de nombreuses années pour créer un environnement de développement.

Beaucoup de mes collègues parlent de Vagrant et beaucoup de gens semblent très enthousiastes à ce sujet mais je n'arrive pas à en saisir les avantages. Il me semble que c'est une série de nouvelles commandes à apprendre pour faire de même. choses que j'ai faites avec Virtualbox.

Avec VirtualBox, j’installe et configure parfaitement un environnement, puis je peux le conditionner sous forme de fichier OVA ou autre et le partager avec d’autres utilisateurs de bureau. Vous pouvez prendre un instantané dans VirtualBox si quelque chose ne va pas.

La marionnette et le chef ne font pas vraiment partie de Vagrant, ils sont leur propre droit?

Alors oui, quels sont les avantages spécifiques de Vagrant par rapport à VirtualBox?

224
John Hunt

C'est une grande question et je vais donc la diviser en trois parties.

Vagabond

Vagrant est utilisé pour configurer une ou plusieurs machines virtuelles en:

  • Importation d'images prédéfinies (appelées "boîtes")
  • Définition de paramètres spécifiques à la machine virtuelle (adresse IP, noms d’hôte, redirection de port, mémoire, etc.)
  • Exécution de logiciels de provisioning comme Puppet ou Chef

Notez qu’il n’installe pas de logiciel et n’installe pas la machine après le chargement de VM et la définition des paramètres de VirtualBox. Considérez-le comme un moteur de script pour VirtualBox.

Voici quelques raisons pour lesquelles j'ai vu l'utilisation de Vagrant sur VirtualBox uniquement.

1. Configurer des réseaux multi-VM avec facilité

La plupart du contenu utilisateur avancé de Vagrant que j'ai lu concerne la configuration simultanée de plusieurs ordinateurs virtuels. Vagrant vous donne un seul fichier de configuration pour les configurer, vous permettant de tous les lancer avec une seule commande.

Supposons que vous avez configuré trois ordinateurs virtuels pour qu'ils se connectent en utilisant des adresses IP statiques sur le sous-réseau 192.168.1. *. Vous vous trouvez dans un emplacement qui utilise déjà ce sous-réseau pour distribuer des adresses IP, et vos ordinateurs virtuels sont maintenant en conflit. Avec Vagrant, vous pouvez simplement éditer le fichier Vagrant et recharger les ordinateurs virtuels, tandis qu'avec VirtualBox, vous devez ouvrir les paramètres de chaque ordinateur virtuel, sinon démarrer chaque VM et les modifier à l'intérieur.

2. Contrôle de la source

En plaçant les paramètres dans un fichier texte, cela permet de placer la configuration sous contrôle de source. Vous avez apporté des modifications la semaine dernière et brisé accidentellement l'image? Il suffit d’annuler les modifications et de recharger la machine virtuelle. Vous pouvez accomplir cela avec des instantanés VirtualBox, mais cela prendra beaucoup plus d'espace qu'un fichier Vagrantfile.

3. Diverses plates-formes

Un grand nombre de cases sont disponibles sur des sites tels que http://vagrantbox.es . Cela vous permet d'essayer divers systèmes d'exploitation ou distributions, en appliquant le même provisionnement pour configurer des environnements similaires. Cela peut aider à tester ou à ajouter de la prise en charge de nouvelles plates-formes et ne prendrait que du temps à utiliser uniquement VirtualBox.

Il existe de nombreux arguments en faveur de l’utilisation du logiciel de provisioning, ainsi que de l’utilisation des instantanés d’image. Pour plus de discussion, je vous renvoie à l'excellent article de Stephen Nelson-Smith Comment construire 100 serveurs Web en un jour .

148
Adam Lukens

En plus de l'excellente réponse donnée par Adam, Vagrant lie tout. Bien que Chef et Puppet (et les scripts Salt et Shell, ainsi que tout autre fournisseur que vous souhaitez utiliser) soient des objets distincts, Vagrant les lie tous ensemble et les fait fonctionner avec seulement un vagrant up.

Cette commande sera

  1. il suffit de démarrer le VM si c'est tout ce qui est nécessaire, mais ça va aussi
  2. créez la boîte à partir de votre boîte de base spécifiée si cela n’est pas encore fait, mais si vous n’avez même pas la boîte de base sur votre machine, elle sera d’abord
  3. récupérez-le à partir de son URL et téléchargez-le sur votre machine.

Vous n'avez pas à penser à tout ça. Disons que vous passez à un autre projet, celui lancé par un collègue. Il vous suffit d'extraire le code de votre référentiel et d'exécuter vagrant up sans vous soucier de télécharger des fichiers ISO ou d'installer quoi que ce soit, ou de vous demander quelle version de la distribution vous devez utiliser pour ce client particulier, ou si vous disposez d'une copie d'un fichier VM vous avez déjà tout ce dont vous avez besoin.

Vous n'avez même pas besoin de vous demander s'ils ont configuré les choses à l'aide de scripts Chef, Puppet ou simplement Shell. (Très bien, vous aurez peut-être besoin de faire un bundle install ou de vous assurer que tout est installé, mais ce n'est pas grave.)

En liant le tout et en fournissant une interface unifiée pour tout cela, il est beaucoup plus facile de simplifier tous les cas d'utilisation, à l'exception des plus simples. Au début, vous aurez peut-être l’impression de réapprendre une nouvelle façon de faire ce que vous faites déjà, mais une fois que vous aurez approfondi votre utilisation de Vagrant, vous découvrirez que vous pouvez faire beaucoup plus avec beaucoup moins d’efforts. Cela vaudra bien l'investissement de temps initial.

26
iconoclast

La capacité à intégrer un chef ou une marionnette à VM est essentielle. La plupart des utilisateurs de vagabonds vous diront qu'ils font beaucoup plus souvent appel à une «provision vagabonde» et parfois à une «recharge vagabonde» plutôt qu'à «vagabond» ou «détruire vagabond». Ces tâches indiquent que le vrai travail ne consiste pas à monter/descendre des machines virtuelles, mais à les «gérer» après coup.

Pour poser une meilleure question (de toute façon posée par des utilisateurs chevronnés de Chef), pourquoi utiliser Vagrant sans couteau avec le plug-in approprié (vous obtiendrez tout de suite le plug-in virtualbox)? Par exemple, transmettre les valeurs d'arguments stockées dans un sac de données à un plugin knife est (beaucoup) plus intelligent, flexible et facile à gérer que de jongler avec un fichier Vagrantfile géant. En général, je définis mes ressources «dynamiques» comme le nombre de processeurs, la quantité de mémoire, le système d'exploitation à déployer, le nom d'hôte, l'adresse IP, les routes, etc., dans la ou les databag (s) du chef, de sorte que je n'ai pas besoin de modifier constamment ma recette; - ). L’édition d’un label de données via l’interface Web de Chef est une tâche de saisie de données très simple que je peux confier aux opérateurs les plus débutants. Avec Vagrantfile, modifiez votre code pour toujours et croyez-le ou non - des ruptures de code - ce qui garantit quasiment que vous ne ferez JAMAIS de simples changements au personnel des Opérations.

Mis à part le fait que couteau ne dispose pas encore de plug-in pour virtualbox (bien que j'en envisage un dans un avenir rapproché), il existe déjà des plug-ins pour la plupart des produits de virtualisation «entreprise», y compris vmware, xenserver et à peu près tous les grands «clouds». fournisseur, ainsi. Cela signifie que knife est de loin supérieur à ce que propose Vagrant si/quand vous êtes prêt à aller au-delà de la virtualbox. Pour le moment, la communauté Chef semble heureuse de laisser les utilisateurs de virtualbox boiter avec Vagrant en n'intégrant pas les apis virtualbox pour un plugin couteau. Il existe un plugin couteau-vagrant qui permet l'utilisation de sacs de données pour passer des arguments. Mais, il nécessite toujours un logiciel vagabond et son fonctionnement monolithique, Vagrantfile.

Donc, je vais sur une branche et dire que vagabond n'est certainement pas «meilleur» que le chef avec un couteau; mais cela est nécessaire (pour le moment) si vous insistez sur la virtualbox et peut-être "plus facile" que de gérer le chef avec des sacs de données, à condition que vous disposiez d'un environnement assez simple à gérer.

9
Andrew

Voici deux autres cas d'utilisation de développeur que vagabond simplifie (par rapport à VirtualBox "simple"). Je n'ai pas vu ces cas d'utilisation mentionnés spécifiquement dans les réponses précédentes.

  1. Vagrant contribue à maintenir les plates-formes de développement et de production aussi proches que possible. Dans un monde idéal, vous devez approvisionner l'environnement de production avec les scripts THE SAME utilisés pour approvisionner la machine virtuelle Vagrant, minimisant ainsi les surprises lors du déploiement.

  2. Tests d'intégration et intégration continue: Vagrant est facile à contrôler à partir de tests. Par conséquent, des piles entières de machines multiples peuvent être facilement contrôlées à l'aide d'outils tels que Jenkins lors de l'exécution de tests.

Oui, "plain" VirtualBox peut également être utilisé ici - mais les conventions utilisées par vagrant facilitent la configuration de ces scénarios.

8
Ben XO

Vagrant abstrait les machines virtuelles afin de vous permettre de changer facilement d'implémentation de machine virtuelle. Vous pouvez passer de Virtual Box à AWS ou à Digital Ocean. C'est comme utiliser SQL au lieu d'un langage de requête spécifique à la base de données.

Vagrant permet aux développeurs de configurer rapidement leur environnement avec une seule commande, qui est identique à celle de tous les autres. Ceci est important dans les grandes entreprises où les développeurs vont et viennent souvent. Cela peut réduire le temps d'installation de 3 jours à 1 heure.

+ Ce qu'a dit Adam.

(Je n'ai toujours pas trouvé d'utilisation pour Chef ou Puppet ...)

0
Chloe