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


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

Beaucoup de mes collègues parlent de vagabond et beaucoup de gens semblent très enthousiastes à ce sujet, mais je ne peux tout simplement pas en saisir les avantages. Il me semble que ce serait une série de nouvelles commandes à apprendre pour faire la même chose. choses que j'ai faites avec Virtualbox.

Avec VirtualBox, j'installe et configure parfaitement un environnement, puis je peux l’emballer sous forme de fichier OVA ou autre et le partager avec d’autres utilisateurs du 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 sur VirtualBox?


211
2018-04-17 14:39


origine


Deux ans plus tard, j'utilise Vagrant tous les jours pour le développement - c'est génial! Mon équipe l’utilise et cela résout nos problèmes d’environnement de développement. - John Hunt
d'opinion ici: Si vous n'avez jamais eu de problème pour configurer des serveurs PXE, connaissez VBoxManage par cœur, sachez configurer nfs en moins d'une minute, etc., et aussi gérer directement les chaînes de build. La valeur augmente avec chaque partie du puzzle qui vous manque. L'utilisation répandue ne provient pas de l'intégration des marionnettes, mais du fait que les utilisateurs pourraient sécuriser des images infestées directement sur Internet. peu importe ce qu'ils vous disent. - Florian Heigl
J'ai également trouvé vagagone beaucoup plus utile dans une équipe multi-développeurs alors qu'auparavant c'était juste moi. J'ai imposé un vagabond à mon équipe et découvert que c'est là que la valeur entre en jeu. - John Hunt
3,5 ans et j'utilise maintenant docker tous les jours pour le développement. C'est bien, mais une bête différente du vagabond ... Selon vos besoins, je pense que le vagabond est toujours une meilleure plateforme de développement pour les équipes - c'est beaucoup plus facile de travailler avec. - John Hunt
4 ans plus tard et j'ai découvert que Docker était terrible. Vive le vagabond - John Hunt


Réponses:


C'est une grande question, alors je vais la diviser en deux parties.

Vagabond

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

  • Importer des images pré-faites (appelées "boîtes")
  • Définition de paramètres spécifiques à la VM (adresse IP, noms d'hôte, redirection de port, mémoire, etc.)
  • Exécution de logiciels de provisionnement tels que Puppet ou Chef

Notez qu'il n'installe pas de logiciel ni ne configure la machine après avoir chargé la machine virtuelle et défini les paramètres VirtualBox. Considérez-le comme un moteur de script pour VirtualBox.

Voici quelques raisons pour lesquelles j'ai utilisé Vagrant sur VirtualBox.

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

La plupart des contenus de Vagrant Power-user que j'ai lus concernaient la configuration simultanée de plusieurs machines virtuelles. Vagrant vous donne un fichier de configuration unique pour les configurer, vous permettant de tous les lancer avec une seule commande.

Supposons que vous ayez configuré trois ordinateurs virtuels pour qu'ils se connectent via 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 machines virtuelles sont désormais en conflit. Avec Vagrant, vous pouvez simplement éditer le fichier Vagrant et recharger les machines virtuelles, alors que, avec VirtualBox, vous devez ouvrir les paramètres de chaque machine virtuelle, sinon démarrez chaque machine virtuelle et modifiez-les.

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. A fait quelques changements la semaine dernière et a accidentellement brisé l'image? Il suffit de rétablir les modifications et de recharger la machine virtuelle. Vous pouvez accomplir cela avec les instantanés VirtualBox, mais cela prendra beaucoup plus d'espace qu'un fichier Vagrant.

3. Diverses plates-formes

Il y a un grand nombre de boîtes disponibles sur des sites tels que http://vagrantbox.es. Cela vous permet d'essayer différents systèmes d'exploitation ou distributions, en appliquant le même provisionnement pour configurer des environnements similaires. Cela peut aider à tester ou à ajouter une prise en charge de nouvelles plates-formes, et cela prendrait beaucoup de temps en utilisant uniquement VirtualBox.

Il y a beaucoup d'arguments pour utiliser un logiciel de provisioning, ainsi que pour utiliser des instantanés d'image. Pour plus de discussion, je vous dirigerai vers l'excellent article de Stephen Nelson-Smith Comment créer 100 serveurs Web par jour.


145
2018-04-27 05:41



Pourtant, je ne comprends pas pourquoi je devrais utiliser vagabond dans l'environnement de développement! Parce que c'est cher (si vous voulez utiliser VMWare!) Nous pouvons préparer une machine virtuelle comme les boîtes de base qui sont utilisées par vagrant puis obtenir le clone de VMware pour configurer une autre machine virtuelle. Avant tout, nous pouvons contrôler tous les paramètres de la machine virtuelle en vmruncommande offerte par VMware, même les changements d'adresse IP ou l'exécution d'un script dans la machine invité! - Oğuz Çelikdemir
@ OğuzÇelikdemir C'est un bon point. Vagrant ne fait qu'accroître la facilité d'utilisation de VMWare en ce qui concerne le lancement d'une nouvelle machine. Dans les coulisses, il utilise vmrun pour le contrôler. J'ai toujours utilisé VirtualBox et je n'ai donc aucune expérience du backend VMWare. - Adam Lukens
@AdamLukens, Merci pour les commentaires détaillés. Ce que vous avez mentionné semble intéressant, mais je me demande si vous êtes au courant de la VboxManage commander? virtualbox.org/manual/ch08.html  A peu près tout ce que vous avez mentionné peut être créé en tant que script en passant le paramètre spécifique ip / paramètre à vboxmanage controlvm ou une commande similaire dans un script shell et ensuite le contrôle de version que .. Alors, comment vagrant améliorer sur virtualbox? - alpha_989
@ alpha_989 Je suis d'accord. Il ne semble pas y avoir de point unique pour utiliser Vagrant. Juste pour plus de commodité. - Niklas Rosencrantz


En plus de l'excellente réponse donnée par Adam, Vagrant lie tout ensemble. Bien que Chef et Puppet (et les scripts Salt et shell et tout autre provisioner que vous voulez utiliser) soient des éléments séparés, Vagrant les relie tous ensemble et les fait fonctionner avec juste un vagrant up.

Ce commandement sera

  1. il suffit de démarrer la VM si c'est tout ce qui est nécessaire, mais il faudra aussi
  2. créer 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 depuis son URL et téléchargez-le sur votre machine.

Vous n'avez pas à penser à tout cela. Disons que vous passez à un autre projet, un projet lancé par un collègue. Vous venez de vérifier le code de votre repo, et exécutez vagrant up, ne vous souciez pas 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 possédez une copie d'une machine virtuelle qui contient déjà tout ce dont vous avez besoin.

Vous n'avez même pas besoin de vous soucier de savoir s'ils ont configuré les choses en utilisant Chef ou Puppet ou juste des scripts shell. (OK, vous devrez peut-être faire un bundle install ou assurez-vous que vous avez tout installé, mais pas encore une grosse affaire.)

En liant le tout et en fournissant une interface unifiée, il est beaucoup plus facile d’utiliser les cas d’utilisation les 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 moins d'effort. Cela vaudra bien l'investissement initial.


25
2018-01-09 17:56



Mais il m’est bien plus facile et rapide d’envoyer une image de presetup VM à un développeur qu’il ne lui appartient de l’installer, d’apprendre à l’utiliser et de faire face à une myriade de problèmes, en particulier lorsque boîtes à fenêtres. Je ne comprends pas vraiment non plus. Semble n'être que des fanboys. - hopeseekr
Installer Vagrant est incroyablement facile ces jours-ci. N'importe qui qui ne peut pas l'installer ne peut pas faire confiance pour écrire du code. Avoir un fichier Vagrant dans votre code source que le développeur extrait est en réalité beaucoup plus facile que d'envoyer une machine virtuelle. Le fichier Vagrant définit la configuration, y compris l'URL à partir de laquelle télécharger la machine virtuelle de base (qu'elle configure ensuite). Si vous n'avez pas besoin de modifier la configuration au départ, vous êtes tous définis. Mais au fur et à mesure que vous travaillerez sur votre projet, vous devrez probablement apporter des modifications. Faites cela dans votre fichier Vagrant. - iconoclast
Puisque vous conservez le fichier Vagrant avec votre code, tous les développeurs qui se joignent au projet recevront automatiquement les modifications apportées à votre machine virtuelle, car vous les créez dans le fichier Vagrant. Configurer votre fichier Vagrant n'a pas besoin d'être difficile. Vous pouvez utiliser le provisionnement de shell si vous trouvez que le Chef et le Marionnette sont excessifs (ce qu’ils sont souvent). Si vous pouvez entrer les commandes du shell dans la machine virtuelle, il est très difficile de configurer les commandes de configuration du shell dans le fichier Vagrant. Il faudra un petit effort initial pour vous épargner beaucoup de maux de tête à long terme. - iconoclast
@hopeseekr moi aussi je pensais cela. J'ai continué à lire en essayant de voir les avantages. Je pense que j'ai enfin compris. J'ai lu un livre sur le réseautage Python. Les tests sont une configuration complexe imitant les machines que vous pouvez utiliser pour apprendre. Vous pouvez créer une VM avec Linux, le faire à la main, et je suis une personne, alors ça va. J'ai installé Vagrant sur Windows et saisi trois commandes Vagrant pour appeler son image à utiliser sur VirtualBox. Et si j'avais 50 PC? long temps pour configurer avec des instantanés. Et s'il y a des changements? 50 mises à jour? Pour moi, j'ai pu commencer à travailler immédiatement sans mettre tout en place. - johnny
et quand vous devez changer quelque chose sur les 50 ordinateurs? - iconoclast


La capacité à intégrer le chef ou la marionnette avec le provisionnement de VM est la clé. La plupart des utilisateurs vagabonds vous diront qu'ils administrent des «services vagabonds» et parfois des «recharges vagabondes» beaucoup plus souvent que des «vagabonds» ou des «vagabonds détruits». Ces tâches indiquent que le véritable travail ne consiste pas à faire tourner les machines virtuelles vers le haut ou vers le bas, mais à les gérer après coup.

Pour poser une meilleure question (posée par des utilisateurs expérimentés de Chef, de toute façon), pourquoi utiliser Vagrant et ne pas utiliser le plug-in approprié (pour accéder au plug-in virtualbox, dans un instant)? Par exemple, transmettre des valeurs d’argument stockées dans un sac de données à un plug-in est plus intelligent, plus souple et plus facile à gérer que de jongler avec un fichier Vagrant géant. Je définis généralement 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 itinéraires, etc., dans les bases de données de chef. ). Éditer une base de données via l'interface Web de Chef est une tâche de saisie de données très simple que je peux donner aux opérateurs les plus jeunes. Avec Vagrantfile, votre code modi fi é à tout moment et croyez-le ou non - les ruptures de code - ce qui garantit quasiment que vous ne devez JAMAIS apporter de modifications simples au personnel des opérations.

Mis à part le fait que le couteau n'a pas encore de plugin pour virtualbox (bien que j'en envisage un dans un avenir pas trop lointain), il existe déjà des plugins pour la plupart des produits de virtualisation d'entreprise, notamment vmware, xenserver et à peu près tous les principaux fournisseur également. Cela signifie que le couteau est de loin supérieur à ce que Vagrant offre si / quand vous êtes prêt à aller au-delà de la virtualbox. Pour le moment, la communauté de Chef semble heureuse de laisser les utilisateurs de virtualbox booster avec Vagrant en n’intégrant pas virtualbox apis dans un plugin. Il existe un plugin couteau-vagabond qui permet d'utiliser des sacs de données pour transmettre des arguments. Mais, cela nécessite toujours un logiciel vagabond et il est monolithique Vagrantfile pour fonctionner.

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


8
2018-03-21 14:13





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

  1. Vagrant aide à maintenir les plates-formes de développement et de production les plus proches possible. Dans un monde idéal, vous mettriez en service l'environnement de production avec les scripts THE SAME utilisés pour provisionner la machine virtuelle Vagrant, en minimisant les surprises au moment 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 multi-machines peuvent être facilement contrôlées à partir d'outils tels que Jenkins lors des tests.

Oui, VirtualBox peut aussi être utilisé ici, mais les conventions utilisées par les vagabonds simplifient la mise en place de ces scénarios.


8
2018-06-20 11:19



Je sérieusement juste copier le vmx et le vmdk de Windows à Linux. Peut-être que c'est différent dans le monde des boîtes virtuelles, mais j'en doute! Qu'est-ce qui est plus facile? Copier un fichier ou manipuler des fichiers vagabonds et la myriade de problèmes qui peuvent mal tourner? - hopeseekr
Pour le préciser, Vagrant peut être considéré comme un langage de définition virtuelle capable de décrire les caractéristiques d’une machine virtuelle, indépendamment du fait qu’il soit hébergé sous VirtualBox, VMware, Parallels ou quoi. Voyez comment Vagrant n'est pas "la concurrence pour" VirtualBox, mais travaille avec ou au-delà. - MarkHu
On utiliserait généralement un fichier Vagrant pour décrire comment une machine virtuelle doit être configurée pour un projet - le fichier Vagrant serait engagé dans le contrôle des sources (git, etc.) avec le projet, pour le partage sur GitHub, etc. qu'un VMDK entier. - Ben XO


Vagrant abstrait les machines virtuelles pour 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 leur environnement rapidement avec une seule commande et il est exactement le même que tout le monde. Ceci est important dans les grandes entreprises où les développeurs vont et viennent souvent. Il peut réduire le temps de configuration de 3 jours à 1 heure.

+ Ce que Adam a dit.

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


0
2018-03-29 01:58