Vagrant ist eine Software, um portierbare, virtuelle Maschinen zu erstellen und durch vereinfachte Erstellung der Entwicklungsumgebung den Fokus mehr auf die eigentliche Entwicklung zu setzen. Du musst nicht mehr, wie bei klassischer Virtualisierungssoftware, ein Betriebssystem installieren. Bei Vagrant kannst du bereits verfügbare Boxen zu dem OS deiner Wahl aus dem Vagrant Box Catalog herunterladen und direkt einsetzen. In dem Tutorial möchte ich dir zeigen, wie du Vagrant installierst und im Anschluss deine erste Umgebung einrichtest.
Attention: For the english version, click here!
Vorbereitungen
Natürlich musst du zuerst Vagrant installieren. Klicke hier auf den Link und befolge die Schritte zu deinem Betriebsystem aus. Neben diversen Linux Distributionen, gibt es Vagrant auch für Windows und MacOS.
Nachdem du Vagrant installiert hast ist es sofort einsatzbereit. Auch auf Windows-Systemen wird nach dem Installationsvorgang die Systemvariable automatisch gesetzt, sodass du über die Kommandozeile oder PowerShell Konsole Vagrant nutzen kannst.
Als letzten Schritt wähle eine Virtualisierungssoftware und installiere diese, falls noch nicht vorhanden: Hyper-V, VirtualBox oder VMware Player.
Öffne ein Terminal bzw. die Kommandozeile und kontrolliere die Installation. Tippe vagrant -v
ein, um dir die installierte Version anzeigen zu lassen:
PS C:\Users\dennis> vagrant -v
Vagrant 2.4.0
Wird der Befehl korrekt ausgegeben, kannst du dir sicher sein, dass du Vagrant
korrekt installiert hast.
VM mit Vagrant erstellen
Als Erstes solltest du dir ein neues Verzeichnis für dein Projekt anlegen. Gebe dazu folgenden Befehl ein um einen neuen Ordner zu erstellen. Wechsel dann in den neu erstellten Ordner:
PS C:\Users\dennis> mkdir C:\Users\d.scheyk\Documents\byte-sized\
PS C:\Users\dennis> cd C:\Users\d.scheyk\Documents\byte-sized\
PS C:\Users\dennis\Documents\byte-sized>
Jetzt kannst du dir eine VM hier aussuchen, die du erstellen möchtest. Hier können User ihre erstellten Boxen in der Vagrant Cloud für andere User zur Verfügung stellen. Ich wähle die generic/FreeBSD13
, also ein normales FreeBSD 13.2. Mit folgendem Befehl initialisierst du das eben angelegte Verzeichnis:
PS C:\Users\dennis\Documents\byte-sized> vagrant init generic/freebsd13
A `Vagrantfile` has been placed in this directory. You are now
ready to `vagrant up` your first virtual environment! Please read
the comments in the Vagrantfile as well as documentation on
`vagrantup.com` for more information on using Vagrant.
Die Meldung sagt aus, dass ein Vagrantfile
in dein angelegtes Verzeichnis abgelegt wurde. Hier kannst du deine VM gegebenenfalls noch modifizieren. Daher lohnt sich ein Blick in die Datei. Ich möchte zum Beispiel für meine Box eine Netzwerkbrücke. Daher kommentiere ich folgende Zeile aus:
config.vm.network "public_network"
Durch das Kommando vagrant init
wurde bereits im Vagrantfile
das Image festgelegt, also generic/FreeBSD13
. Die Dokumentation zu Vagrant
bietet eine sehr umfangreiches Nachschlagewerk zum Vagrantfile
und den möglichen Konfigurationsparametern deiner Box.
Mit dem Befehl vagrant up
startest du deine Umgebung bzw. deine Box. Hier wird jetzt deine ausgewählte Box heruntergeladen und die Anweisungen im Vagrantfile umgesetzt. Ich habe an dieser Stelle noch weitere Anpassungen in meinem Vagrantfile
vorgenommen.
PS C:\Users\dennis\Documents\byte-sized> vagrant up
Bringing machine 'default' up with 'virtualbox' provider...
==> default: Importing base box 'generic/freebsd13'...
==> default: Matching MAC address for NAT networking...
==> default: Checking if box 'generic/freebsd13' version '4.3.2' is up to date...
==> default: Setting the name of the VM: byte-sized_default_1705774040855_46285
==> default: Clearing any previously set network interfaces...
==> default: Preparing network interfaces based on configuration...
default: Adapter 1: nat
==> default: Forwarding ports...
default: 22 (guest) => 2222 (host) (adapter 1)
==> default: Running 'pre-boot' VM customizations...
==> default: Booting VM...
==> default: Waiting for machine to boot. This may take a few minutes...
default: SSH address: 127.0.0.1:2222
default: SSH username: vagrant
default: SSH auth method: private key
default: Warning: Connection reset. Retrying...
default: Warning: Connection aborted. Retrying...
default:
default: Vagrant insecure key detected. Vagrant will automatically replace
default: this with a newly generated keypair for better security.
default:
default: Inserting generated public key within guest...
default: Removing insecure key from the guest if it's present...
default: Key inserted! Disconnecting and reconnecting using new SSH key...
==> default: Machine booted and ready!
PS C:\Users\d.scheyk\Documents\byte-sized>
Die Box ist erfolgreich hochgefahren und bereit. Wenn du diese Abschlussmeldung hast, kannst du erfolgreich in deine frisch installierte Box wechseln.
PS C:\Users\d.scheyk\Documents\byte-sized> vagrant ssh
[vagrant@freebsd13 ~]$
Wie du am Prompt
erkennst, hast du erfolgreich in deine Box gewechselt.
Mit exit
kannst du wieder ganz einfach in deine Kommandozeile wechseln.
Weitere nützliche Befehle in Vagrant
Um den Zustand einer Maschine zu speichern und zu stoppen, nutze vagrant suspend
PS C:\Users\dennis\Documents\byte-sized> vagrant suspend
==> default: Saving VM state and suspending execution...
Um die Maschine sauber herunterzufahren, also zu beenden, nutze vagrant halt
PS C:\Users\d.scheyk\Documents\byte-sized> vagrant halt
==> default: Attempting graceful shutdown of VM...
Egal welchen der beiden Befehle du verwendet hast, mit vagrant up
fährst du deine Box sofort wieder hoch!
Wenn du deine Box löschen möchtest, nutze vagrant destroy
PS C:\Users\dennis\Documents\byte-sized> vagrant destroy
default: Are you sure you want to destroy the 'default' VM? [y/N] y
==> default: Destroying VM and associated drives…
PS C:\Users\dennis\Documents\byte-sized>
Fazit
Das war es auch schon zum Schnelleinstieg mit Vagrant. Ich persönlich arbeite immer mehr mit Vagrant
, da es mir meine Arbeit sehr vereinfacht. In kurzer Zeit bin ich in der Lage ist ein kleines Datacenter zu erstellen, mehrere VM’s mit nur einem Vagrantfile
zu erstellen und auch neue Dinge für meinen Blog zu testen. Für mich ein Gamechanger!
Vagrant – Installation and how to create your first box
Vagrant
is a software used to create portable virtual machines, simplifying the setup of development environments and allowing developers to focus more on actual development without the need to install an operating system, as is required with traditional virtualization software. In Vagrant, you can download pre-existing boxes for your preferred operating system from the Vagrant Box Catalog and use them directly. In this tutorial, I’ll show you how to install Vagrant and set up your first environment.
Preparations
Firstly, you need to install Vagrant. Click on this link and follow the steps for your operating system. Vagrant is available for various Linux distributions, as well as Windows and MacOS.
Once Vagrant is installed, it is ready to use. On Windows systems, the system variable is automatically set after installation, allowing you to use Vagrant through the command line or PowerShell console.
As a final step, choose a virtualization software and install it if not already present: Hyper-V, VirtualBox, or VMware Player.
Open a terminal or command prompt and check the installation. Type vagrant -v
to display the installed version:
PS C:\Users\dennis> vagrant -v
Vagrant 2.4.0
If the command is correctly executed, you can be confident that Vagrant is installed correctly.
Create a VM with Vagrant
To create a VM with Vagrant, follow these steps:
First, create a new directory for your project. Use the following commands to create a new folder and navigate into it:
PS C:\Users\dennis> mkdir C:\Users\d.scheyk\Documents\byte-sized\
PS C:\Users\dennis> cd C:\Users\d.scheyk\Documents\byte-sized\
PS C:\Users\dennis\Documents\byte-sized>
Now choose the desired VM that you want to create. Users can share their created boxes in the Vagrant Cloud for others to use. In this example, the box generic/FreeBSD13
is selected, which contains a regular FreeBSD 13.2. Initialize the newly created directory with the following command:
PS C:\Users\dennis\Documents\byte-sized> vagrant init generic/freebsd13
A Vagrantfile
has been placed in this directory. You are now ready to start your first virtual environment with vagrant up
! Read the comments in the Vagrantfile and consult the documentation on vagrantup.com
for more information on using Vagrant.
The message indicates that a Vagrantfile has been placed in your created directory. Here you can modify your VM if necessary. So, it’s worth taking a look at the file. For example, you might want to comment out the following line to disable a network bridge for the box:
config.vm.network "public_network"
The vagrant init
command has already set the image in the Vagrantfile, in this case, generic/FreeBSD13
. The Vagrant documentation provides comprehensive information about the Vagrantfile and the possible configuration parameters for your box.
Use the vagrant up
command to start your environment or VM. This will download your selected box and apply the instructions in the Vagrantfile. You can make additional customizations in the Vagrantfile.
PS C:\Users\dennis\Documents\byte-sized> vagrant up
Bringing machine 'default' up with 'virtualbox' provider...
==> default: Importing base box 'generic/freebsd13'...
==> default: Matching MAC address for NAT networking...
==> default: Checking if box 'generic/freebsd13' version '4.3.2' is up to date...
==> default: Setting the name of the VM: byte-sized_default_1705774040855_46285
==> default: Clearing any previously set network interfaces...
==> default: Preparing network interfaces based on configuration...
default: Adapter 1: nat
==> default: Forwarding ports...
default: 22 (guest) => 2222 (host) (adapter 1)
==> default: Running 'pre-boot' VM customizations...
==> default: Booting VM...
==> default: Waiting for machine to boot. This may take a few minutes...
default: SSH address: 127.0.0.1:2222
default: SSH username: vagrant
default: SSH auth method: private key
default: Warning: Connection reset. Retrying...
default: Warning: Connection aborted. Retrying...
default:
default: Vagrant insecure key detected. Vagrant will automatically replace
default: this with a newly generated keypair for better security.
default:
default: Inserting generated public key within guest...
default: Removing insecure key from the guest if it's present...
default: Key inserted! Disconnecting and reconnecting using new SSH key...
==> default: Machine booted and ready!
PS C:\Users\d.scheyk\Documents\byte-sized>
The box has successfully started and is ready. Once you have this final message, you can successfully switch to your freshly installed box.
Use the vagrant ssh
command to enter your box.
PS C:\Users\d.scheyk\Documents\byte-sized> vagrant ssh
[vagrant@freebsd13 ~]$
As you can see from the prompt, you have successfully switched to your box. Use exit
to return to your terminal session.
Additional useful commands in Vagrant
To save the state of a machine and stop it, use vagrant suspend
:
PS C:\Users\dennis\Documents\byte-sized> vagrant suspend
==> default: Saving VM state and suspending execution...
To cleanly shut down the machine, use vagrant halt
:
PS C:\Users\d.scheyk\Documents\byte-sized> vagrant halt
==> default: Attempting graceful shutdown of VM...
Regardless of which of the two commands you used, you can bring your box back up immediately with vagrant up
!
If you want to delete your box, use vagrant destroy
:
PS C:\Users\dennis\Documents\byte-sized> vagrant destroy
default: Are you sure you want to destroy the 'default' VM? [y/N] y
==> default: Destroying VM and associated drives…
PS C:\Users\dennis\Documents\byte-sized>
Conclusion
That’s all for the quick introduction to Vagrant. Personally, I find myself using Vagrant more and more as it simplifies my work. In a short time, I can create a small data center, set up multiple VMs with just one Vagrantfile, and test new things for my blog. A game-changer for me!
Start the discussion