Was genau machen die Vagrant-Befehle?

96

Es gibt überraschenderweise keine Dokumentation darüber, was die Vagrant-Befehle tun, außer Referenzen im gesamten Tutorial "Erste Schritte".

Was ich bisher ausgearbeitet habe:

  • box- " Boxen " verwalten
  • destroy - die VM herunterfahren und dann das gespeicherte Image löschen?
  • gem
  • halt - Fahren Sie die VM herunter
  • init - Bereiten Sie ein Verzeichnis mit einer neuen Vagrant-Datei vor
  • package- die VM herunterfahren und dann in ein 'Paket' konvertieren, das in eine Box verwandelt werden kann? (Oder so)
  • provision - Führen Sie nur die Bereitstellungsphase (z. B. Chef, Puppet ...) aus
  • reload - Ändern Sie die VM-Konfiguration (z. B. Vagrantfile erneut anwenden), starten Sie die VM neu und stellen Sie sie erneut bereit
  • resume - Aufheben der Suspendierung (dh Aufheben des Ruhezustands)
  • ssh - Öffnen Sie eine SSH-Shell-Verbindung zur VM
  • ssh-config
  • status
  • suspend - Ruhezustand der VM
  • up - einige oder alle von: Kopieren Sie ein VM-Image, um eine neue VM zu erstellen, wenden Sie die Konfiguration darauf an und starten Sie sie

Habe ich diese richtig? Was sind die anderen? Ich bin mir noch ein bisschen unklar über den genauen Unterschied zwischen reloadund destroy/ up.

Steve Bennett
quelle
Die aktuelle Dokumentation ist jetzt viel besser - vagrantup.com/v1/docs/index.html
JavaRocky
2
@ JavaRocky, es scheint mir nicht so. vagrantup.com/v1/docs/commands.html enthält immer noch buchstäblich keine Informationen pro Unterbefehl. Ich würde mehr Informationen über jeden Befehl in einer Anleitung wie dieser erwarten (im Vergleich zu -h), nicht weniger.
Matthew Flaschen
2
@ JavaRocky - Wenn das besser ist, kann ich mir nicht vorstellen, wie sie vorher waren. Überhaupt nicht nützlich.
DougW
Interessanterweise haben sie die Liste der Befehle tatsächlich entfernt, wodurch die Website noch weniger informativ ist als zuvor.
Steve Bennett
Aus den aktuellen Dokumenten geht hervor, dass "Lebenslauf" mit "Vagrant Up" überflüssig ist. Letzterer nimmt beispielsweise einen Computer wieder auf, wenn er angehalten wird, und stellt ihn erneut bereit, wenn er angehalten wird. Ist das richtig? docs.vagrantup.com/v2/getting-started/teardown.html
cboettig

Antworten:

48

Ich stimme Ihnen zu, dass die Dokumentation bei vagrantup etwas kürzer ist.

Einige Informationen können aus dem Befehlshilfesystem abgerufen werden.

  1. Zum Beispiel: gemBefehl.

    Geben Sie einfach den Befehl ohne Argumente ein: vagrant gem -hund er erzeugt die Informationen, die Sie möglicherweise benötigen.

    vagrant gemwird verwendet, um Vagrant-Plugins über das RubyGems-System zu installieren. Tatsächlich vagrant gemist dies nur ein Frontend für die eigentliche gem Benutzeroberfläche, mit dem Unterschied, dass Vagrant ein benutzerdefiniertes Verzeichnis erstellt, in dem Edelsteine ​​installiert werden, damit sie von Ihren Systemedelsteinen isoliert sind.

  2. Vagrant ssh-config::

    Unter der Haube, wenn Sie vagrant sshssh in VM ausführen . Es verwendet seinen bekannten SSH-Schlüssel. Die Informationen zu diesem Schlüssel werden von bereitgestellt vagrant ssh-config. Dies ist nützlich, wenn Sie den bekannten Schlüssel in Ihren eigenen privaten Schlüssel ändern und Boxen für die Verwendung vorbereiten möchten.

    Manchmal möchten Sie auch die ssh-basierte Automatisierung mit Ihren VMs verwenden. In diesem Fall ist es hilfreich zu wissen, welcher Schlüssel verwendet wird. Sie könnten den normalen ssh-Befehl verwenden -ssh -i keyfile ..

  3. vagrant status <vmname>

    Dieser Befehl ist ein Wrapper, der Informationen zum Status von vm bereitstellt. Es könnte laufen, gespeichert und ausgeschaltet werden.

  4. vagrant reload

    Wenn Sie Änderungen an der Konfiguration in vagrantfile vornehmen, die wirksam werden müssen. Möglicherweise möchten Sie die VM neu laden. Die in der Vagrant-Datei definierte Bereitstellung wird erneut ausgeführt, es sei denn, Sie fragen nicht dazu.

    Die von Ihnen aus einer Basisbox erstellte VM wird nicht zerstört. Das bedeutet, dass alle Änderungen, die Sie an Ihrer VM vorgenommen haben, z. B. das Erstellen eines Ordners in Ihrem Benutzerverzeichnis, nach dem erneuten Laden vorhanden sind.

    Es ist wie ein Neustart, bei dem Ihre VM ausgeschaltet und dann bestimmte Konfigurationsänderungen vorgenommen werden, die nur angewendet werden können, wenn die VM ausgeschaltet wurde. und dann einschalten. Beispiel: wie das Anschließen einer anderen virtuellen SATA-Festplatte.

  5. vagrant up

    Dadurch wird Ihre Konfigurationsdatei gelesen vagrantfileund anschließend eine VM aus der Basisbox erstellt. Base Box ist wie eine Vorlage. Sie können viele VMs daraus erstellen.

    Ebenso vagrant destroyzerstört Ihre VM. In diesem Fall gehen alle Änderungen verloren, die Sie im Inneren vorgenommen haben. Aber das ist die coole Idee, dass Sie beim Erstellen einer neuen VM von einem vordefinierten Basiszustand ausgehen können.

Ich benutze es sehr gerne und habe darüber gebloggt .

Zusammenfassend ist es ein guter Wrapper für VirtualBox-APIs und -Befehle . Sie können sich die VirtualBox-Befehle ansehen , um einige der Funktionen besser zu verstehen.

pyfunc
quelle
1
Von welcher Version von Vagrant erhalten Sie all diese Ausgaben? Ich benutze 1.0.5 und bekomme nichts dergleichen. vagrant gem -hgibt die Ausgabe an, die Sie gezeigt haben, aber alle anderen sagen überhaupt nichts Nützliches.
DougW
2
Vagrant 1.2 scheint rückwärts gegangen zu sein. Beispiel vagrant init -h: Gibt nur Folgendes an: Verwendung: vagrant init [Boxname] [Box-URL] -h, --help Diese Hilfe drucken
Steve Bennett
34

Ich bin nicht sicher, wann es geändert wurde, aber die aktuelle Version (1.6.3) enthält eine ordnungsgemäße Liste von Befehlen, und das Ausführen vagrant list-commandsergibt eine noch vollständigere Liste:

box             manages boxes: installation, removal, etc.
connect         connect to a remotely shared Vagrant environment
destroy         stops and deletes all traces of the vagrant machine
docker-logs     outputs the logs from the Docker container
docker-run      run a one-off command in the context of a container
global-status   outputs status Vagrant environments for this user
halt            stops the vagrant machine
help            shows the help for a subcommand
init            initializes a new Vagrant environment by creating a Vagrantfile
list-commands   outputs all available Vagrant subcommands, even non-primary ones
login           log in to Vagrant Cloud
package         packages a running vagrant environment into a box
plugin          manages plugins: install, uninstall, update, etc.
provision       provisions the vagrant machine
rdp             connects to machine via RDP
reload          restarts vagrant machine, loads new Vagrantfile configuration
resume          resume a suspended vagrant machine
rsync           syncs rsync synced folders to remote machine
rsync-auto      syncs rsync synced folders automatically when files change
share           share your Vagrant environment with anyone in the world
ssh             connects to machine via SSH
ssh-config      outputs OpenSSH valid configuration to connect to the machine
status          outputs status of the vagrant machine
suspend         suspends the machine
up              starts and provisions the vagrant environment
version         prints current and latest Vagrant version

Die einzigen Befehle, die in der vollständigen Liste ausgelassen werden, wenn sie vagrantalleine ausgeführt werden, sind die Docker- und Rsync- Befehle . Auf meinem System jedenfalls.

Das scheint jetzt die endgültige Antwort zu sein.

Steve Bennett
quelle
8

Es ist wirklich schade, dass die aktuellen Dokumente für v1.1 zwar besser aussehen, aber viel weniger vollständig sind als v1. Das Credo "weniger ist mehr" funktioniert im Bereich der Dokumentation einfach nicht ...

Ich habe festgestellt, dass die umfassendste Übersicht in Bezug auf Vagrantfiles in den Kommentaren einer frisch erstellten Vagrantfile nach der Initialisierung eines Vagrant-Projekts enthalten ist. Es werden Parameter erwähnt, die derzeit nicht in der Dokumentation enthalten sind.

David Spreekmeester
quelle