Ich gebe es zu: Ich bin ein Fan von Linux. Obwohl ich seit Jahren Slackware auf Workstations und Red Hat Enterprise Linux (RHEL) auf Servern verwende, liebe ich es zu sehen, wie andere Distributionen Dinge machen. Außerdem teste ich sehr gerne Anwendungen und Skripte, die ich auf anderen Distributionen schreibe, um die Portabilität sicherzustellen. Tatsächlich ist das meiner Meinung nach einer der großen Vorteile von Linux: Sie können eine Distribution herunterladen und Ihre Software darauf kostenlos testen. Mit einem geschlossenen Betriebssystem ist das nicht möglich, zumindest nicht, ohne entweder eine EULA zu brechen oder für das Spielen zu bezahlen, und selbst dann melden Sie sich oft an, um mehrere Gigabyte herunterzuladen, nur um eine Anwendung zu testen, die nicht mehr als ein paar Hundert ist Megabyte. Aber Linux ist Open Source, daher gibt es selten eine Ausrede, um mindestens die drei oder vier Hauptdistributionen zu ignorieren, außer dass das Einrichten einer virtuellen Maschine viele Klicks und manchmal komplexe virtuelle Netzwerke erfordern kann. Zumindest war das früher die Ausrede, bis Vagrant den Workflow für virtuelle Maschinen für Entwickler änderte.
Was ist Vagrant
Vagrant ist ein einfacher virtueller Maschinenmanager für Ihr Terminal. Es ermöglicht Ihnen, eine minimale und vorgefertigte virtuelle Maschine einfach aus dem Internet zu ziehen, lokal auszuführen und in nur wenigen Schritten per SSH darauf zuzugreifen. So richten Sie eine virtuelle Maschine am schnellsten ein. Es ist ideal für Webentwickler, die einen Test-Webserver benötigen, Programmierer, die eine Anwendung über mehrere Distributionen hinweg testen müssen, und Hobbyisten, die gerne sehen, wie verschiedene Distributionen funktionieren.
Vagrant selbst ist auch relativ minimal. Es ist kein Virtualisierungs-Framework selbst. Es verwaltet nur Ihre virtuellen Maschinen (“Boxen” in der Vagrant-Terminologie). Es kann VirtualBox oder über ein Plug-In das leichtgewichtige libvirt-Projekt als Backend verwenden.
Was ist libvirt
Das libvirt-Projekt ist ein Toolkit zur Verwaltung der Virtualisierung mit Unterstützung für KVM, QEMU, LXC und mehr. Man könnte es sich als eine Art API für virtuelle Maschinen vorstellen, die es Entwicklern ermöglicht, benutzerfreundliche Anwendungen zu schreiben, die es Benutzern leicht machen, die Virtualisierung über libvirt zu orchestrieren. Ich verwende libvirt als Backend für Vagrant, weil es für mehrere Anwendungen nützlich ist, einschließlich virt-manager und GNOME-Boxen.
Vagrant installieren
Sie können Vagrant über vagrantup.com/downloads installieren. Es gibt Builds für Debian-basierte Systeme, CentOS-basierte Systeme, macOS, Windows und mehr.
Für CentOS, Fedora oder ähnliches erhalten Sie ein RPM-Paket, das Sie mit installieren können dnf
:
$ sudo dnf install ./vagrant_X.Y.ZZ_x86_64.rpm
Auf Debian, Linux Mint, Elementary und ähnlichen erhalten Sie ein DEB-Paket, das Sie mit installieren können apt
:
$ sudo apt install ./vagrant_X.Y.ZZ_x86_64.deb
Installieren von libvirt und Support-Paketen
Unter Linux hat Ihre Distribution möglicherweise bereits libvirt installiert, aber um die Integration mit Vagrant zu ermöglichen, benötigen Sie noch einige andere Pakete. Installieren Sie diese mit Ihrem Paketmanager.
Auf Fedora, CentOS und ähnlichen:
$ sudo dnf install gcc libvirt
libvirt-devel libxml2-devel
make ruby-devel libguestfs-tools
Auf Debian, Linux Mint und ähnlichen:
$ sudo apt install build-dep vagrant ruby-libvirt
qemu libvirt-daemon-system libvirt-clients ebtables
dnsmasq-base libxslt-dev libxml2-dev libvirt-dev
zlib1g-dev ruby-dev libguestfs-tools
Abhängig von Ihrer Distribution müssen Sie möglicherweise die libvirt
Dämon:
$ sudo systemctl start libvirtd
Installieren des Vagrant-libvirt-Plugins
In Vagrant wird libvirt durch ein Plug-In aktiviert. Vagrant macht es einfach, ein Plug-In zu installieren, sodass Ihr erster Vagrant-Befehl einer ist, den Sie selten wieder ausführen werden:
$ vagrant plugin install vagrant-libvirt
Nachdem das libvirt-Plug-in installiert ist, können Sie mit der Verwendung virtueller Maschinen beginnen.
Einrichten Ihrer Vagrant-Umgebung
Um mit Vagrant zu beginnen, erstellen Sie ein Verzeichnis namens ~/Vagrant
. Hier bist du Vagrantfiles
sind gelagert.
$ mkdir ~/Vagrant
Erstellen Sie in diesem Verzeichnis ein Unterverzeichnis, das eine Distribution darstellt, die Sie herunterladen möchten. Angenommen, Sie benötigen eine CentOS-Testbox.
Erstellen Sie ein CentOS-Verzeichnis und wechseln Sie dann dorthin:
$ mkdir ~/Vagrant/centos
$ cd ~/Vagrant/centos
Jetzt müssen Sie eine virtuelle Maschine finden, damit Sie das gerade erstellte Verzeichnis in eine Vagrant-Umgebung konvertieren können.
Eine virtuelle Vagrant-Maschine finden
Im Großen und Ganzen kommen Vagrant-Boxen von drei verschiedenen Orten: Hashicorp (die Betreuer von Vagrant), Betreuer von Distributionen und Leute wie Sie und ich. Einige Bilder sind minimal und sollen als Grundlage für die Anpassung dienen. Im Gegensatz dazu versuchen andere, einen bestimmten Bedarf zu lösen (z. B. finden Sie möglicherweise ein LAMP-Stack-Image, das für die Webentwicklung bereit ist). Sie können Bilder finden, indem Sie den Haupt-Hub nach Boxen app.vagrantup.com/boxes/search durchsuchen oder durchsuchen.
Suchen Sie für dieses Beispiel nach “centos” und suchen Sie den Eintrag namens generic/centos8
. Klicken Sie auf das Bild, um Anweisungen zur Verwendung der virtuellen Maschine zu erhalten. Die Anleitung gibt es in zwei Varianten:
- Der Code, den Sie für eine Vagrantfile benötigen
- Der Befehl, den Sie benötigen, um die Box von einem Terminal aus zu verwenden
Letzteres ist die einfachere Methode:
$ vagrant init generic/centos8
Die init
Unterbefehl erstellt eine Konfigurationsdatei, Vagrantfile genannt, in Ihrem aktuellen Verzeichnis, die dieses Verzeichnis in eine Vagrant-Umgebung umwandelt. Sie können jederzeit eine Liste bekannter Vagrant-Umgebungen mithilfe der global-status
Unterbefehl:
$ vagrant global-status
id name provider state directory
-------------------------------------------
49c797f default libvirt running /home/tux/Vagrant/centos8
Starten einer virtuellen Maschine mit Vagrant
Sobald Sie die ausgeführt haben init
Befehl können Sie Ihre virtuelle Maschine mit starten vagrant up
:
$ vagrant up
Dies veranlasst Vagrant, das Image der virtuellen Maschine herunterzuladen, wenn es noch nicht lokal vorhanden ist, ein virtuelles Netzwerk einzurichten und Ihre Box zu konfigurieren.
Betreten einer virtuellen Vagrant-Maschine
Sobald Ihre virtuelle Maschine betriebsbereit ist, können Sie sich mit anmelden vagrant ssh
:
$ vagrant ssh
box$
Sie stellen eine Verbindung zu der Box her, die in Ihrer aktuellen Vagrant-Umgebung ausgeführt wird. Sobald Sie sich angemeldet haben, können Sie alle nativen Befehle dieses Hosts ausführen. Es handelt sich um eine virtuelle Maschine, auf der ein eigener Kernel mit emulierter Hardware und gängiger Linux-Software ausgeführt wird.
Verlassen einer virtuellen Vagrant-Maschine
Um Ihre virtuelle Vagrant-Maschine zu verlassen, melden Sie sich vom Host ab, wie Sie normalerweise einen Linux-Computer beenden:
box$ exit
Alternativ können Sie die virtuelle Maschine herunterfahren:
box$ sudo poweroff
Sie können die Maschine auch mit der Taste stoppen vagrant
Befehl:
box$ vagrant halt
Zerstören einer virtuellen Vagrant-Maschine
Wenn Sie mit einer virtuellen Vagrant-Maschine fertig sind, können Sie sie zerstören:
$ vagrant destroy
Alternativ können Sie eine virtuelle Maschine mit dem globalen box
Unterbefehl:
$ vagrant box remove generic/centos8
Vagabunden ist einfach
Vagrant macht virtuelle Maschinen trivial, wegwerfbar und schnell. Wenn Sie eine Testumgebung oder einen gefälschten Server zum Pingen oder Entwickeln oder einen sauberen Laborcomputer zum Experimentieren oder Überwachen benötigen, können Sie sich einen mit Vagrant besorgen. Einige Leute denken, dass virtuelle Maschinen jetzt, da Container die Server übernommen haben, nicht mehr relevant sind, aber virtuelle Maschinen haben einzigartige Eigenschaften, die sie nützlich machen. Sie führen ihren eigenen Kernel aus, haben einen vollständigen und einzigartigen Stack, der vom Host-Rechner getrennt ist, und verwenden emulierte Hardware. Wenn Sie eine virtuelle Maschine benötigen, ist Vagrant möglicherweise der beste Weg, um sie zu erhalten.