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 pouvoir 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, c'est leur propre truc, n'est-ce pas?
Alors oui, quels sont les avantages spécifiques de Vagrant par rapport à VirtualBox?
la source
Réponses:
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:
Notez qu’il n’installe pas de logiciel et n’installe pas la machine après le chargement de la 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 ordinateur virtuel et les modifier à l'intérieur.
2. Contrôle de la source
En mettant 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 pour utiliser un logiciel de provisioning, ainsi que pour utiliser des instantanés d'image. Pour plus de discussion, je vous renvoie à l'excellent article de Stephen Nelson-Smith intitulé Comment construire 100 serveurs Web en un jour .
la source
vmrun
commande proposée par VMware, même les changements d'adresse IP ou l'exécution d'un script à l'intérieur de la machine invitée!vmrun
pour le contrôler. J'avais toujours utilisé VirtualBox et n'ai donc aucune expérience du backend VMWare.VboxManage
commande? virtualbox.org/manual/ch08.html Quasiment tout ce que vous avez mentionné peut être créé comme un script en passant l'IP / paramètre spécifiquevboxmanage controlvm
ou une commande similaire dans un script shell et le contrôle de version .. Alors , commentvagrant
améliorer plusvirtualbox
?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 a
vagrant up
.Cette commande sera
Vous n'avez pas à penser à tout ça. Supposons que vous basculiez vers un projet différent, démarré par un collègue. Vous ne faites que extraire le code de votre dépôt et le lancer
vagrant up
, sans vous soucier de télécharger des fichiers ISO ou d'installer quoi que ce soit, ni de vous demander quelle version de la distribution vous devez utiliser pour ce client particulier, ou si vous avez déjà une copie d'un ordinateur virtuel. vous avez besoin.Vous n'avez même pas besoin de vous demander s'ils ont configuré les choses à l'aide de Chef ou de Puppet ou simplement de scripts shell. (D'accord, vous devrez peut-être effectuer une opération
bundle install
ou vous assurer que tout est installé, mais ce n'est pas grave.)En liant tous les éléments 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.
la source
La capacité à intégrer un chef ou une marionnette à l’approvisionnement en ordinateurs virtuels est essentielle. La plupart des utilisateurs de vagabonds vous diront qu'ils utilisent beaucoup plus souvent une «provision vagabonde» et parfois un «rechargement vagabond» que «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 peut-on utiliser Vagrant et non couteau avec le plugin approprié (vous obtiendrez immédiatement le plugin 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 fiches de données du chef, de sorte que je n'ai pas besoin de modifier sans cesse 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 jeunes. Avec Vagrantfile, modifiez votre code pour toujours et croyez-le ou non - des ruptures de code - ce qui garantit que vous ne ferez PAS 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 principaux «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 de disposer d'un environnement assez simple à gérer.
la source
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.
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.
Tests d'intégration et intégration continue: Vagrant est facile à contrôler à partir de tests. Par conséquent, des piles complètes 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.
la source
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 ...)
la source