Vagrant — Reproduzierbare Entwicklungsumgebungen als VM
Praxis-Guide zu Vagrant — VM-basierte Entwicklungsumgebungen mit Vagrantfile, Boxen, Providern, Provisioning und Snapshots auf der Kommandozeile.
Vagrant von HashiCorp baut reproduzierbare Entwicklungsumgebungen als vollwertige virtuelle Maschinen – nicht als Container. Die gesamte Konfiguration liegt in einer einzigen Datei, dem Vagrantfile, das du zusammen mit deinem Projekt versionierst. Als Basis dienen vorgefertigte Boxen, die Vagrant über einen Provider wie VirtualBox, VMware, Hyper-V oder libvirt startet. So bekommt jedes Teammitglied mit einem einzigen vagrant up exakt dieselbe Umgebung. Dieser Guide führt dich durch die wichtigsten Kommandos – vom Initialisieren über das Provisioning bis zu Snapshots.
Initialisieren & Starten
vagrant init <box> — Erstellt ein Vagrantfile für eine bestimmte Box.
vagrant init ubuntu/jammy64vagrant up — Startet die VM und führt das Provisioning aus.
vagrant upvagrant up --provider=<name> — Startet mit einem bestimmten Provider.
vagrant up --provider=vmware_desktopvagrant up --no-provision — Startet, ohne die Provisioner auszuführen.
vagrant up --no-provisionvagrant reload — Startet die VM neu (übernimmt Änderungen am Vagrantfile).
vagrant reloadvagrant reload --provision — Startet neu und führt die Provisioner erneut aus.
vagrant reload --provisionStoppen & Löschen
vagrant halt — Fährt die VM kontrolliert herunter.
vagrant haltvagrant halt -f — Erzwingt das Herunterfahren der VM.
vagrant halt -fvagrant suspend — Pausiert die VM (Zustand wird auf die Festplatte gesichert).
vagrant suspendvagrant resume — Setzt eine pausierte VM fort.
vagrant resumevagrant destroy — Stoppt und löscht die VM vollständig.
vagrant destroyvagrant destroy -f — Erzwingt das Löschen ohne Rückfrage.
vagrant destroy -fSSH & Status
vagrant ssh — Verbindet sich per SSH mit der VM.
vagrant sshvagrant ssh -c '<command>' — Führt einen Befehl per SSH in der VM aus.
vagrant ssh -c 'cat /etc/os-release'vagrant ssh-config — Zeigt die SSH-Konfiguration (zur Nutzung mit dem ssh-Befehl).
vagrant ssh-config >> ~/.ssh/configvagrant status — Zeigt den Status der aktuellen VM.
vagrant statusvagrant global-status — Zeigt den Status aller Vagrant-VMs systemweit.
vagrant global-statusvagrant port — Zeigt die Port-Weiterleitungen der VM.
vagrant portProvisioning
vagrant provision — Führt die Provisioner auf einer laufenden VM aus.
vagrant provisionvagrant provision --provision-with <name> — Führt nur einen bestimmten Provisioner aus.
vagrant provision --provision-with shellvagrant upload <src> <dest> — Lädt eine Datei in die VM hoch.
vagrant upload config.yaml /home/vagrant/config.yamlBox-Verwaltung
vagrant box list — Listet alle installierten Boxen auf.
vagrant box listvagrant box add <name> — Lädt eine Box herunter und fügt sie hinzu.
vagrant box add ubuntu/jammy64vagrant box update — Aktualisiert die Box der aktuellen Umgebung.
vagrant box updatevagrant box remove <name> — Entfernt eine Box aus dem lokalen Speicher.
vagrant box remove ubuntu/focal64vagrant box outdated — Prüft, ob die Box veraltet ist.
vagrant box outdatedvagrant package --output <file> — Verpackt die aktuelle VM in eine wiederverwendbare Box.
vagrant package --output mybox.boxSnapshots
vagrant snapshot save <name> — Erstellt einen benannten Snapshot der VM.
vagrant snapshot save before-updatevagrant snapshot restore <name> — Stellt einen Snapshot wieder her.
vagrant snapshot restore before-updatevagrant snapshot list — Listet alle Snapshots auf.
vagrant snapshot listvagrant snapshot delete <name> — Löscht einen Snapshot.
vagrant snapshot delete before-updatevagrant snapshot push — Erstellt schnell einen Snapshot (Stack-basiert).
vagrant snapshot pushvagrant snapshot pop — Stellt den zuletzt abgelegten Snapshot wieder her und löscht ihn.
vagrant snapshot pop Fazit
Vagrant glänzt überall dort, wo du eine vollständige, isolierte Umgebung brauchst – ein anderes Betriebssystem, ein Kernel-Modul oder ein Setup, das sich mit Containern nur umständlich nachbilden lässt. Sobald dein Vagrantfile einmal steht, ist der Einstieg für neue Teammitglieder ein einziges Kommando. Für leichtgewichtige, rein Linux-basierte Dienste sind Container oft die schlankere Wahl; für reproduzierbare VM-Umgebungen bleibt Vagrant das Werkzeug der Wahl.
Weiterführende Links
- Vagrant – offizielle Dokumentation – Referenz und Handbuch von HashiCorp (englisch)
- Vagrant Cloud – Box-Katalog – fertige Boxen zum Einbinden (englisch)
- Vagrant (Software) – Wikipedia – Hintergrund und Geschichte
Verwandte Kommandos
- ddev – containerbasierte lokale Entwicklungsumgebungen für PHP-Projekte
- docker – Container statt vollwertiger VMs bauen und betreiben
- docker-compose – mehrere Container deklarativ orchestrieren