Warum sollte ich Vagrant anstelle von VirtualBox verwenden?

Ich verwende 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 davon einfach nicht verstehen.. scheint mir, als wäre es eine Reihe neuer Befehle zu lernen, um die gleichen Dinge zu tun, 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 teilen Sie es mit anderen Office-Benutzern. Sie können einen Snapshot in VirtualBox erstellen, wenn etwas schief geht.

Marionette und Chef sind nicht wirklich Teil von Vagrant, sie sind ihr eigenes Ding, oder?

Also ja,welche Vorteile bietet Vagrant speziell gegenüber VirtualBox?

Author: Giacomo1968, 2013-04-17

5 answers

Dies ist eine große Frage, also werde ich sie in drei Abschnitte aufteilen.

Vagabund

Vagrant wird verwendet, um eine oder mehrere virtuelle Maschinen einzurichten durch:

  • Importieren vorgefertigter Bilder ("Boxen" genannt)
  • VM-spezifische Einstellungen festlegen (IP-Adresse, Hostnamen, Portweiterleitung, Speicher usw.)
  • Ausführen von Bereitstellungssoftware wie Puppet oder Chef

Beachten Sie, dass keine Software installiert oder die Maschine nach dem Laden der VM und der Einstellung eingerichtet wird VirtualBox-Einstellungen. Betrachten Sie es als Scripting-Engine für VirtualBox.

Hier sind einige Gründe, die ich für die Verwendung von Vagrant über nur VirtualBox gesehen habe.

1. Einrichten von Multi-VM-Netzwerken mit Leichtigkeit

Bei den meisten Vagrant Power-User-Inhalten, die ich gelesen habe, ging es darum, mehrere VMs gleichzeitig einzurichten. Vagrant gibt Ihnen eine einzige Konfigurationsdatei, um diese einzurichten, sodass Sie alle mit einem Befehl starten können.

Angenommen, Sie haben drei VMs für das Netzwerk konfiguriert andere mit statischen IPs auf dem 192.168.1.* Subnetz. Sie befinden sich an einem Ort, der dieses Subnetz bereits zum Verteilen von IP-Adressen verwendet, und Ihre VMs stehen jetzt in Konflikt. Mit Vagrant können Sie einfach die Vagrantfile bearbeiten und die VMs neu laden, während Sie mit VirtualBox die Einstellungen für jede VM öffnen müssen, wenn nicht jede VM booten und darin ändern.

2. Quellcodeverwaltung

Durch das Einfügen der Einstellungen in eine Textdatei kann die Konfiguration unter Quellcodeverwaltung gestellt werden. Letzte Woche einige Änderungen vorgenommen und versehentlich das Bild beschädigt? Setzen Sie einfach die Änderungen zurück und laden Sie die VM neu. Sie können dies mit VirtualBox-Snapshots erreichen, aber es wird viel mehr Platz beanspruchen als nur eine Vagrantfile.

3. Verschiedene Plattformen

Es gibt eine große Anzahl von Boxen an Standorten wie http://vagrantbox.es. Auf diese Weise können Sie verschiedene Betriebssysteme oder Distributionen ausprobieren und dieselbe Bereitstellung anwenden, um ähnliche Umgebungen einzurichten. Dies kann helfen mit testen oder Hinzufügen von Unterstützung für neue Plattformen, und wäre zeitaufwendig mit nur VirtualBox.

Es gibt viele Argumente für die Verwendung von Bereitstellungssoftware sowie für die Verwendung von Image-Snapshots. Für weitere Diskussionen werde ich Sie auf Stephen Nelson-Smiths exzellenten Artikel verweisen Wie man 100 Webserver an einem Tag baut.

 165
Author: Adam Lukens,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/techietown.info/template/agent.layouts/content.php on line 61
2019-04-25 13:12:00

Zusätzlich zu der ausgezeichneten Antwort von Adam bindet Vagrant alles zusammen. Obwohl Chef und Puppet (und Salt und Shell-Skripte und was auch immer andere Provisioner Sie verwenden möchten) getrennte Dinge sind, bindet Vagrant alles zusammen und lässt es mit nur einem vagrant up.

, Dass ein Befehl

  1. starten Sie einfach die VM, wenn das alles ist, was benötigt wird, aber es wird auch
  2. Erstellen Sie das Feld aus Ihrem angegebenen Basisfeld, wenn dies auch noch nicht geschehen ist, aber wenn Sie sie haben nicht einmal die Basis-Box auf Ihrer Maschine wird es zuerst
  3. Holen Sie es von seiner URL und laden Sie es auf Ihren Computer herunter.

Du musst nicht an all das denken. Angenommen, Sie wechseln zu einem anderen Projekt, das von einem Kollegen gestartet wurde. Sie überprüfen einfach den Code aus Ihrem Repo und führen vagrant up, ohne sich Gedanken über das Herunterladen von ISOs oder die Installation von etwas zu machen oder sich zu fragen, welche Version von welcher Distribution Sie für diesen bestimmten Client verwenden müssen oder ob Sie eine Kopie von eine VM, die bereits alles hat, was Sie brauchen.

Sie müssen sich nicht einmal darum kümmern, ob sie Dinge mit Chef oder Puppet oder nur Shell-Skripten eingerichtet haben. (Okay, Sie müssen also möglicherweise ein bundle install oder auf andere Weise sicherstellen, dass alles installiert ist, aber immer noch keine große Sache.)

Indem es alles zusammenbindet und eine einheitliche Schnittstelle für alles bereitstellt, kann es alle außer den einfachsten Anwendungsfällen viel einfacher machen. Zuerst haben Sie vielleicht das Gefühl, nur einen neuen Weg zu lernen um das zu tun, was Sie bereits tun, aber sobald Sie tiefer in Vagrant Use sind, werden Sie feststellen, dass Sie mit viel weniger Aufwand viel mehr tun können. Es wird die anfängliche Zeitinvestition wert sein.

 29
Author: iconoclast,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/techietown.info/template/agent.layouts/content.php on line 61
2014-01-09 17:56:37

Die Fähigkeit, Chef oder Puppet in die VM-Bereitstellung zu integrieren, ist der Schlüssel. Die meisten Vagrant-Benutzer werden Ihnen sagen, dass sie "vagrant provision" und gelegentlich "vagrant reload" viel häufiger ausführen als "Vagrant up" oder "vagrant destroy". Diese Aufgaben zeigen an, dass die eigentliche Arbeit nicht darin besteht, VMs hoch - /runterzudrehen, sondern sie danach zu "verwalten".

Um eine bessere Frage zu stellen (die sowieso von erfahrenen Chef-Benutzern gestellt wird), könnte es sein, warum Vagrant und nicht knife mit dem entsprechenden Plugin verwendet werden (wird virtualbox plugin, im moment)? Zum Beispiel ist das Übergeben von Argumentwerten, die in einem Data Bag gespeichert sind, an ein Knife-Plugin (viel) intelligenter, flexibler und verwaltbarer als das Jonglieren einer riesigen Vagrantfile. Normalerweise definiere ich meine "dynamischen" Ressourcen wie # CPUs, Speichermenge, welches Betriebssystem bereitgestellt werden soll, Hostname, IP, Routen usw. in Chef-Datensätzen, sodass ich mein Rezept nicht ständig ändern muss; -). Das Bearbeiten eines Databag über eine Weboberfläche ist eine wirklich einfache Dateneingabe, die ich der die meisten junior-Betreiber. Mit Vagrantfile ändert Ihr forever modiy Code und ob Sie es glauben oder nicht-Code bricht-was so ziemlich garantiert, dass Sie NIEMALS einfache Änderungen an Ihre Mitarbeiter weitergeben werden.

Abgesehen von der Tatsache, dass es noch kein Plugin für Virtualbox gibt (obwohl ich mir eines in nicht allzu ferner Zukunft vorstelle), gibt es bereits Plugins für die meisten "Enterprise" - Virtualisierungsprodukte, einschließlich vmware, xenserver und fast jedem großen "Cloud" - Anbieter. Dies bedeutet, dass Knife dem, was Vagrant bietet, weit überlegen ist, wenn Sie bereit sind, über Virtualbox hinauszugehen. Im Moment scheint die Chef-Community glücklich zu sein, Virtualbox-Benutzer zusammen mit Vagrant hinken zu lassen, indem sie Virtualbox-APIs für ein Knife-Plugin nicht integriert. Es gibt ein Knife-Vagrant-Plugin, das die Verwendung von Data Bags zum Übergeben von Argumenten ermöglicht. Aber es erfordert immer noch vagrant Software und es ist monolithische Vagrantfile zu funktionieren.

Also, ich werde auf ein Glied gehen und sagen Vagrant ist definitiv NICHT "besser" als Chef mit Messer; aber notwendig (vorerst), wenn Sie auf Virtualbox bestehen und vielleicht "einfacher" als Chef mit Data Bags verwalten, vorausgesetzt, Sie haben eine ziemlich einfache Umgebung zu verwalten.

 9
Author: Andrew,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/techietown.info/template/agent.layouts/content.php on line 61
2014-03-21 14:13:49

Hier sind zwei weitere Anwendungsfälle für Entwickler, die Vagrant vereinfacht (über "einfache" VirtualBox). Ich habe diese Anwendungsfälle in den vorherigen Antworten nicht speziell aufgerufen gesehen.

  1. Vagrant hilft mit dem Ziel, die Entwicklungs-und Produktionsplattformen möglichst nahe beieinander zu halten. In einer idealen Welt würden Sie die Produktionsumgebung mit DENSELBEN Skripten bereitstellen, die für die Bereitstellung der Vagrant VM verwendet werden, wodurch Überraschungen zur Bereitstellungszeit minimiert werden.

  2. Integrationstests und kontinuierliche Integration: Vagrant ist einfach über Tests zu steuern, und daher können bei Testläufen ganze Multi-Machine-Stacks einfach über Tools wie Jenkins gesteuert werden.

Ja, auch hier kann" plain " VirtualBox verwendet werden-aber die von vagrant verwendeten Konventionen machen es einfacher, diese Szenarien einzurichten.

 8
Author: Ben XO,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/techietown.info/template/agent.layouts/content.php on line 61
2014-06-20 11:19:16

Vagrant abstrahiert virtuelle Maschinen, sodass Sie problemlos zwischen Implementierungen virtueller Maschinen wechseln können. Sie können von Virtual Box zu AWS oder Digital Ocean wechseln. Es ist wie mit SQL anstelle einer datenbankspezifischen Abfragesprache.

Mit Vagrant können Entwickler ihre Umgebung schnell mit nur einem Befehl einrichten und es ist genau das gleiche wie bei allen anderen. Dies ist wichtig in großen Unternehmen, in denen Entwickler oft kommen und gehen. Es kann die Zeit für die Einrichtung von 3 Tagen auf 1 reduzieren Stunden.

+ Was Adam gesagt hat.

(Ich habe immer noch keine Verwendung für Chef oder Puppet gefunden...)

 1
Author: Chloe,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/techietown.info/template/agent.layouts/content.php on line 61
2018-03-29 01:58:39