Ich benutze VirtualBox seit vielen Jahren, um eine Entwicklungsumgebung zu erstellen.
Viele meiner Kollegen sprechen über Vagrant und viele Leute scheinen sehr aufgeregt darüber zu sein, aber ich kann die Vorteile einfach nicht begreifen. Mir scheint, es ist eine Reihe neuer Befehle, die man lernen muss, um dasselbe zu tun Dinge, die ich mit Virtualbox gemacht habe.
Mit VirtualBox installiere und konfiguriere ich eine Umgebung perfekt, dann kann ich sie als OVA oder was auch immer verpacken und sie für andere Bürobenutzer freigeben. Sie können einen Schnappschuss in VirtualBox machen, wenn etwas schief geht.
Marionette und Koch sind nicht wirklich ein Teil von Vagrant, sie sind ihre eigene Sache, oder?
Ja, welche Vorteile bietet Vagrant speziell gegenüber VirtualBox?
quelle
Antworten:
Das ist eine große Frage, deshalb werde ich sie in drei Abschnitte aufteilen.
Landstreicher
Vagrant wird verwendet, um eine oder mehrere virtuelle Maschinen einzurichten, indem:
Beachten Sie, dass keine Software installiert oder der Computer eingerichtet wird, nachdem die VM geladen und die VirtualBox-Einstellungen vorgenommen wurden. Stellen Sie sich das als Scripting-Engine für VirtualBox vor.
Hier sind einige Gründe, die ich für die Verwendung von Vagrant anstelle von VirtualBox gesehen habe.
1. Richten Sie Multi-VM-Netzwerke mit Leichtigkeit ein
In den meisten von mir gelesenen Vagrant-Inhalten für Power-User ging es darum, mehrere VMs gleichzeitig einzurichten. Vagrant stellt Ihnen eine einzige Konfigurationsdatei zur Verfügung, mit der Sie alle mit einem Befehl starten können.
Angenommen, Sie haben drei VMs so konfiguriert, dass sie mit statischen IP-Adressen im Subnetz 192.168.1. * Miteinander vernetzt sind. Sie befinden sich an einem Ort, an dem dieses Subnetz bereits zum Verteilen von IP-Adressen verwendet wird, und Ihre VMs verursachen nun einen Konflikt. Mit Vagrant können Sie einfach die Vagrant-Datei bearbeiten und die VMs neu laden, während Sie mit VirtualBox die Einstellungen für jede VM öffnen müssten, wenn Sie nicht jede VM booten und im Inneren ändern möchten.
2. Quellcodeverwaltung
Durch das Speichern der Einstellungen in einer Textdatei kann die Konfiguration der Quellcodeverwaltung unterzogen werden. Letzte Woche einige Änderungen vorgenommen und versehentlich das Bild gebrochen? Setzen Sie einfach die Änderungen zurück und laden Sie die VM neu. Sie können dies mit VirtualBox-Snapshots erreichen, aber es nimmt viel mehr Platz ein als nur eine Vagrant-Datei.
3. Verschiedene Plattformen
Auf Websites wie http://vagrantbox.es ist eine große Anzahl von Boxen verfügbar . Auf diese Weise können Sie verschiedene Betriebssysteme oder Distributionen ausprobieren und dieselbe Bereitstellung anwenden, um ähnliche Umgebungen einzurichten. Dies kann beim Testen oder Hinzufügen von Support zu neuen Plattformen hilfreich sein und wäre nur mit VirtualBox zeitaufwendig.
Es gibt viele Argumente für die Verwendung von Bereitstellungssoftware sowie für die Verwendung von Image-Snapshots. Für weitere Erläuterungen verweise ich Sie auf Stephen Nelson-Smiths hervorragenden Artikel Wie man 100 Webserver an einem Tag erstellt .
quelle
vmrun
Befehle steuern , die von VMware angeboten werden, sogar IP-Adressänderungen oder das Ausführen eines Skripts auf der Gastmaschine!vmrun
zur Steuerung verwendet. Ich hatte schon immer VirtualBox verwendet und daher keine Erfahrung mit dem VMWare-Backend.VboxManage
Befehl bekannt ist? So ziemlich alles, was Sie erwähnt haben, kann als Skript erstellt werden, indem Sie die spezifische ip / -Parametervboxmanage controlvm
oder einen ähnlichen Befehl in einem Shell-Skript übergeben und dann die Versionskontrolle durchführen. Wievagrant
verbessert sich dasvirtualbox
?Neben der hervorragenden Antwort von Adam verbindet Vagrant alles miteinander. Obwohl Chef und Puppet (sowie Salt- und Shell-Skripte und alle anderen Provisioner, die Sie verwenden möchten) separate Dinge sind, verbindet Vagrant alles miteinander und sorgt dafür, dass es mit nur einem funktioniert
vagrant up
.Dieser eine Befehl wird
Darüber muss man nicht nachdenken. Angenommen, Sie wechseln zu einem anderen Projekt, das von einem Kollegen gestartet wurde. Sie checken einfach den Code aus Ihrem Repo aus und führen ihn aus
vagrant up
, ohne sich Gedanken über das Herunterladen von ISOs oder die Installation von etwas zu machen oder sich zu fragen, welche Version der Distribution Sie für diesen bestimmten Client verwenden müssen oder ob Sie eine Kopie einer VM haben, die bereits alles enthält du brauchst.Sie brauchen sich nicht einmal darum zu kümmern, ob sie Dinge mit Chef oder Puppet oder nur mit Shell-Skripten eingerichtet haben. (Okay, also müssen Sie möglicherweise eine
bundle install
oder auf andere Weise sicherstellen, dass Sie alles installiert haben, aber immer noch keine große Sache.)Indem Sie alles zusammenbinden und eine einheitliche Oberfläche für alles bereitstellen, können Sie alle bis auf die einfachsten Anwendungsfälle erheblich vereinfachen. Zuerst haben Sie vielleicht das Gefühl, dass Sie nur eine neue Methode erlernen, um das zu tun, was Sie bereits tun. Wenn Sie jedoch tiefer in die Verwendung von Vagrant einsteigen, werden Sie feststellen, dass Sie mit viel weniger Aufwand viel mehr erreichen können. Die anfängliche Investition lohnt sich.
quelle
Die Fähigkeit, Chef oder Marionette in die VM-Bereitstellung zu integrieren, ist der Schlüssel. Die meisten Vagrant-Benutzer werden Ihnen mitteilen, dass sie viel häufiger "Vagrant Provisioning" und gelegentlich "Vagrant Reload" ausführen als "Vagrant Up" oder "Vagrant Destroy". Diese Aufgaben deuten darauf hin, dass die eigentliche Arbeit nicht darin besteht, VMs hoch- oder herunterzufahren, sondern sie nachträglich zu verwalten.
Um eine bessere Frage zu stellen (jedenfalls von erfahrenen Kochnutzern), könnte es sein, warum Vagrant und nicht knife mit dem entsprechenden Plugin verwendet wird (wird gleich zum Virtualbox-Plugin weitergeleitet). Das Übergeben von Argumentwerten, die in einer Datentasche gespeichert sind, an ein Messer-Plugin ist (weit) intelligenter, flexibler und verwaltbarer als das Jonglieren einer riesigen Vagrant-Datei. In der Regel definiere ich meine "dynamischen" Ressourcen wie CPU-Anzahl, Speicherplatz, Betriebssystem, Hostname, IP-Adresse, Routen usw. in Kochdatenbeuteln, sodass ich mein Rezept nicht ständig ändern muss. ). Das Bearbeiten eines Datenbeutels über die Chef-Weboberfläche ist eine wirklich einfache Aufgabe für die Dateneingabe, die ich den meisten Nachwuchskräften geben kann. Mit Vagrantfile können Sie Ihren Code für immer verändern und ob Sie es glauben oder nicht - Code bricht ab - was so ziemlich sicherstellt, dass Sie KEINE einfachen Änderungen an das Betriebspersonal weitergeben.
Abgesehen davon, dass knife noch kein Plugin für virtualbox hat (obwohl ich mir eines für die nicht allzu ferne Zukunft vorstelle), gibt es bereits Plugins für die meisten Virtualisierungsprodukte für Unternehmen, einschließlich VMware, Xenserver und nahezu jeder größeren Cloud. auch Anbieter. Dies bedeutet, dass Messer den Angeboten von Vagrant weit überlegen sind, wenn Sie bereit sind, über virtualbox hinauszugehen. Im Moment scheint die Chef-Community glücklich zu sein, Virtualbox-Benutzer mit Vagrant zusammenarbeiten zu lassen, indem Virtualbox-APIs nicht für ein Messer-Plugin integriert werden. Es gibt ein Messer-Vagabund-Plugin, das die Verwendung von Datenbeuteln zur Weitergabe von Argumenten ermöglicht. Aber es erfordert immer noch Software von Vagrant und es ist eine monolithische Vagrant-Datei, um zu funktionieren.
Also werde ich mich auf die Beine stellen und sagen, dass Vagrant definitiv NICHT "besser" ist als Chefkoch mit Messer; Dies ist jedoch (vorerst) erforderlich, wenn Sie auf virtualbox bestehen und möglicherweise „einfacher“ als das Verwalten des Küchenchefs mit Datentaschen sind, vorausgesetzt, Sie haben eine relativ einfache Umgebung zum Verwalten.
quelle
Hier sind zwei weitere Anwendungsfälle für Entwickler, die von Vagrant vereinfacht werden (gegenüber "einfacher" VirtualBox). Ich habe diese Anwendungsfälle in den vorherigen Antworten nicht speziell herausgestellt.
Vagrant hilft mit dem Ziel, die Entwicklungs- und Produktionsplattformen so nah wie möglich beieinander zu halten. In einer idealen Welt würden Sie die Produktionsumgebung mit denselben Skripten bereitstellen, die zur Bereitstellung der Vagrant-VM verwendet werden, um Überraschungen bei der Bereitstellung zu minimieren.
Integrationstests und kontinuierliche Integration: Vagrant lässt sich leicht über Tests steuern, sodass bei Testläufen ganze Stapel mit mehreren Maschinen problemlos über Tools wie Jenkins gesteuert werden können.
Ja, "normale" VirtualBox kann auch hier verwendet werden - aber die Konventionen von vagrant vereinfachen das Einrichten dieser Szenarien.
quelle
Vagrant abstrahiert virtuelle Maschinen, sodass Sie problemlos die Implementierung virtueller Maschinen wechseln können. Sie können von Virtual Box zu AWS oder Digital Ocean wechseln. Es ist wie bei der Verwendung von SQL anstelle einer datenbankspezifischen Abfragesprache.
Mit Vagrant können Entwickler ihre Umgebung mit nur einem Befehl schnell einrichten und es ist genau das Gleiche wie bei allen anderen. Dies ist wichtig in großen Unternehmen, in denen Entwickler häufig kommen und gehen. Die Einrichtungszeit kann von 3 Tagen auf 1 Stunde verkürzt werden.
+ Was Adam gesagt hat.
(Ich habe immer noch keine Verwendung für Chef oder Puppet gefunden ...)
quelle