In diesem Vagrant-Tutorial erfahren wir mehr über Vagrant, Vagrant-Boxen, Vagrant-Dateien, Bereitstellungstools, die Installation von Vagrant auf Linux-Betriebssystemen und schließlich einige grundlegende Vagrant-Befehle zum Erstellen und Verwalten virtueller Maschinen über die Befehlszeile.
1. Einführung in Vagrant
Landstreicher ist eine Open-Source-Software zum Erstellen und Verwalten virtueller Softwareentwicklungsumgebungen. Es bietet eine saubere, einfach zu konfigurierende, reproduzierbare und portable Entwicklungsumgebung. Mit anderen Worten, Vagrant ermöglicht es uns, einfach und schnell eine universelle Softwareentwicklungsumgebung bereitzustellen, die überall eingesetzt werden kann. Vagrant eliminiert einfach die Ausrede „funktioniert auf meiner Maschine“. Denn alle arbeiten in der gleichen Umgebung mit der gleichen Konfiguration. Es spielt keine Rolle, welches Betriebssystem sie verwenden.
Vagrant wird häufig verwendet, um eine identische und kollaborative Arbeitsumgebung für Entwickler einzurichten, um an einem gemeinsamen Projekt zu arbeiten. Es isoliert alle erforderlichen Abhängigkeiten und ihre Konfigurationseinstellungen in einer einzigen, verfügbaren Umgebung. Wenn die anderen Entwickler eine Entwicklungsumgebung mit derselben Konfigurationsdatei erstellen, erhalten sie dieselbe Umgebung mit denselben Einstellungen.
Vagrant ist eine plattformübergreifende Anwendung, die in Ruby geschrieben ist Sprache. Es unterstützt GNU/Linux, Mac OS und Microsoft Windows. Es wird von Hashicorp entwickelt und veröffentlicht unter MIT Lizenz.
1.1. Vagabundenboxen
Die "Box" ist ein Format und eine Erweiterung für Vagrant-Umgebungen. Die Vagabundenboxen sind nur die Basisbilder. Sie können ein Virtualbox-Image oder VMware-Image oder das Image eines Cloud-Anbieters wie Amazon Machine Image (AMI) sein. Wir können die Vagrant-Boxen auf beliebige andere Systeme kopieren und eine exakte Nachbildung der aktuellen Entwicklung einrichten.
In Vagrant Cloud stehen viele vorkonfigurierte Vagrant-Boxen zum Download bereit öffentliches Repositorium. Wenn Sie keine vorkonfigurierten Boxen verwenden möchten, erstellen Sie einfach eine nach Ihren Wünschen und verteilen Sie sie über dieses Repository an alle.
1.2. Vagrantfile
Die Betriebssystem- und Softwarevoraussetzungen sind in einer Konfigurationsdatei namens „vagrantfile“ definiert. Diese Datei wird zusammen mit den Vagrant-Boxen verteilt. Wenn Sie eine VM mit Vagrant initialisieren, liest es diese Datei und richtet Ihre Entwicklungsumgebung entsprechend ein. Der eigentliche Zweck einer Vagrant-Datei besteht also darin, den Typ der virtuellen Maschine und die Konfiguration und Bereitstellung der VMs zu beschreiben.
Die folgenden Details sind in einer typischen Vagrant-Datei definiert:
- Betriebssystemversion z.B. Ubuntu Bionic.
- Aktivieren/deaktivieren Sie die automatische Suche nach Box-Updates.
- Netzwerkkonfiguration;
- Portweiterleitung,
- ein privates Netzwerk konfigurieren (nur Host-Zugriff auf die Maschine),
- Öffentliches Netzwerk konfigurieren (überbrücktes Netzwerk).
- Ordner für Gast-VM freigeben.
- Bevorzugten Anbieter festlegen z.B. virtualbox, kvm.
- Definiere die Gesamtmenge an Arbeitsspeicher für die VM.
- Ermöglichen Sie die Bereitstellung mit Shell-Skript oder Konfigurationsverwaltungstools wie Ansible.
1.3. Bereitstellungstools
Vagrant ist keine eigenständige Virtualisierungsplattform wie KVM oder Virtualbox. Es ist nur ein Wrapper und ein Front-End, das sich zwischen einer Virtualisierungssoftware und einer virtuellen Maschine befindet. Vagrant verwendet verschiedene Dienstanbieter und Bereitstellungstools, um die Entwicklungsumgebungen zu erstellen und zu verwalten.
Die virtuellen Maschinen bauen auf gängigen Virtualisierungsanwendungen wie VirtualBox, KVM, Docker, VMware usw. und Cloud-Service-Anbietern wie AWS, Azure, GCE und vielen mehr auf. Die vollständige Liste der unterstützten Anbieter können Sie hier einsehen . Vagrant wird standardmäßig mit Unterstützung für VirtualBox, Hyper-V und Docker ausgeliefert. VirtualBox ist der Standardanbieter für Vagrant.
Sobald die virtuelle Maschine erstellt ist, können wir die Software darauf mit einfachen Shell-Skripten und branchenüblichen Konfigurationsverwaltungstools wie Ansible, CFEngine, Chef, Docker, Podman, Puppet und Salt usw. installieren. Die Benutzer können auch die Konfiguration anpassen von virtuelle Umgebungen gemäß ihren Anforderungen mithilfe der Bereitstellungstools.
Kurz gesagt, die Provider (z. B. VirtualBox, AWS) werden verwendet, um eine virtuelle Umgebung zu erstellen, und die Provisioner (z. B. Ansible, Puppet) werden verwendet, um die virtuellen Umgebungen anzupassen.
2. Installieren Sie Vagrant unter Linux
Die Installation von Vagrant ist unglaublich einfach und unkompliziert. Laden Sie einfach die neueste Version von der Vagrant-Downloadseite herunter und installieren Sie sie mit dem Standardverfahren für Ihre Betriebssysteme. Informationen zur Installation von Vagrant auf verschiedenen Linux-Plattformen finden Sie unter folgendem Link.
- So installieren Sie Vagrant unter Linux
3. Vagrant-Tutorial – Grundlegende Vagrant-Befehle zum Erstellen und Verwalten virtueller Maschinen
Hier habe ich nur Beispiele für die grundlegenden Vagrant-Befehle gegeben, die wir zum Einrichten und Verwalten einer virtualisierten Entwicklung benötigen. Um die vollständige Verwendung von Vagrant zu erfahren, lesen Sie die offizielle Dokumentation am Ende.
3.1. Vagrant-Projektverzeichnis erstellen
Zuerst müssen wir ein Projektverzeichnis erstellen.
Ich werde ein Verzeichnis namens myvagrants
erstellen für meine virtuelle Umgebung:
$ mkdir myvagrants
Cd in dieses Verzeichnis, um virtuelle Maschinen zu erstellen und zu speichern:
$ cd myvagrants
3.2. Vagrant-Umgebung initialisieren
Initialisieren Sie die Vagrant-Umgebung mit dem folgenden Befehl:
$ vagrant init hashicorp/bionic64
Beispielausgabe:
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.
Der obige Befehl initialisiert das aktuelle Verzeichnis als Standard-Vagrant-Umgebung und erstellt eine Basis-Vagrant-Datei.
Sie können den Inhalt der neu erstellten Vagrantfile mit cat
anzeigen Befehl und kennen Sie die Details der virtuellen Maschine, die Sie erstellen werden:
$ cat Vagrantfile | less
Wenn Sie die VM in den folgenden Schritten starten, lädt sie die von HashiCorp veröffentlichte Ubuntu Bionic Box herunter. Das Vagrant-Team empfiehlt außerdem die Verwendung der Bento-Boxen . Sie sind Open Source und wurden für beliebte Anbieter wie Virtualbox, VMWare und Parallels entwickelt. HashiCorp und Bento sind die einzigen beiden offiziell empfohlenen Box-Sets.
3.3. Virtuelle Maschine starten
Erstellen und starten Sie nun die virtuelle Maschine gemäß der Vagrant-Datei (die wir im vorherigen Schritt erstellt haben) mit dem Befehl:
$ vagrant up
Beispielausgabe:
Bringing machine 'default' up with 'virtualbox' provider... ==> default: Box 'hashicorp/bionic64' could not be found. Attempting to find and install... default: Box Provider: virtualbox default: Box Version: >= 0 ==> default: Loading metadata for box 'hashicorp/bionic64' default: URL: https://vagrantcloud.com/hashicorp/bionic64 ==> default: Adding box 'hashicorp/bionic64' (v1.0.282) for provider: virtualbox default: Downloading: https://vagrantcloud.com/hashicorp/boxes/bionic64/versions/1.0.282/providers/virtualbox.box Download redirected to host: vagrantcloud-files-production.s3.amazonaws.com ==> default: Successfully added box 'hashicorp/bionic64' (v1.0.282) for 'virtualbox'! ==> default: Importing base box 'hashicorp/bionic64'... ==> default: Matching MAC address for NAT networking... ==> default: Checking if box 'hashicorp/bionic64' version '1.0.282' is up to date... ==> default: Setting the name of the VM: myvagrants_default_1597837509450_67666 Vagrant is currently configured to create VirtualBox synced folders with the `SharedFoldersEnableSymlinksCreate` option enabled. If the Vagrant guest is not trusted, you may want to disable this option. For more information on this option, please refer to the VirtualBox manual: https://www.virtualbox.org/manual/ch04.html#sharedfolders This option can be disabled globally with an environment variable: VAGRANT_DISABLE_VBOXSYMLINKCREATE=1 or on a per folder basis within the Vagrantfile: config.vm.synced_folder '/host/path', '/guest/path', SharedFoldersEnableSymlinksCreate: false ==> 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: 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: Remote connection disconnect. Retrying... default: Warning: Remote connection disconnect. 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! ==> default: Checking for guest additions in VM... default: The guest additions on this VM do not match the installed version of default: VirtualBox! In most cases this is fine, but in rare cases it can default: prevent things such as shared folders from working properly. If you see default: shared folder errors, please make sure the guest additions within the default: virtual machine match the version of VirtualBox you have installed on default: your host and reload your VM. default: default: Guest Additions Version: 6.0.10 default: VirtualBox Version: 6.1 ==> default: Mounting shared folders... default: /vagrant => /home/sk/myvagrants
Der obige Befehl lädt die Ubuntu Bionic Box aus der Vagrant-Cloud herunter und erstellt eine neue virtuelle Maschine namens "myvagrants_default_1597837509450_67666" , fügen Sie es der Virtualbox hinzu und starten Sie die VM automatisch.
Sie sehen keine Benachrichtigungen, obwohl die VM ausgeführt wird. Um zu überprüfen, ob die VM ausgeführt wird, öffnen Sie die Virtualisierungsanwendung (z. B. VirtualBox oder Virt-Manager) und prüfen Sie, ob die VM ausgeführt wird oder nicht.
Da Vagrant Virtualbox als Standardanbieter verwendet, kann ich die laufende VM im Virtualbox-Manager sehen.
Wie Sie sehen können, läuft Ubuntu Bionic VM in Virtualbox.
Wenn Sie einen anderen Anbieter verwenden, zum Beispiel Virt-Manager, öffnen Sie ihn und prüfen Sie, ob die Vagrant-Maschine läuft.
3.4. Zugriff auf virtuelle Maschinen
Sie können die ausgeführten VMs über SSH verbinden und darauf zugreifen.
Um mit dem Befehl SSH in die laufende Vagrant-Box zu gelangen, führen Sie Folgendes aus:
$ vagrant ssh
Beispielausgabe:
Welcome to Ubuntu 18.04.3 LTS (GNU/Linux 4.15.0-58-generic x86_64) * Documentation: https://help.ubuntu.com * Management: https://landscape.canonical.com * Support: https://ubuntu.com/advantage System information as of Wed Aug 24 11:56:42 UTC 2020 System load: 0.08 Processes: 88 Usage of /: 2.5% of 61.80GB Users logged in: 0 Memory usage: 11% IP address for eth0: 10.0.2.15 Swap usage: 0% * Are you ready for Kubernetes 1.19? It's nearly here! Try RC3 with sudo snap install microk8s --channel=1.19/candidate --classic https://microk8s.io/ has docs and details. 0 packages can be updated. 0 updates are security updates. [email protected]:~$
3.5. Lokale und Gastdateien synchronisieren
Vagrant unterstützt die Dateisynchronisierung sofort. Standardmäßig teilt Vagrant Ihr Projektverzeichnis (dasjenige, das die Vagrant-Datei enthält. In meinem Fall ist es ~/myvagrants
.) an /vagrant
Verzeichnis in Ihrer virtuellen Gastmaschine.
Sie können dies überprüfen, indem Sie den Inhalt von /vagrant
auflisten Verzeichnis in Ihrer virtuellen Maschine:
[email protected]:~$ ls /vagrant/ Vagrantfile
Bitte beachten Sie, dass die Vagrant-Datei, die Sie in der virtuellen Maschine sehen, tatsächlich die gleiche Vagrant-Datei ist, die sich auf Ihrer tatsächlichen Host-Maschine befindet.
Um zu testen, ob die Synchronisierung tatsächlich funktioniert, erstellen Sie eine Beispieldatei in /vagrant
Verzeichnis auf Ihrem Gastcomputer:
[email protected]:~$ touch /vagrant/test.txt
Beenden Sie die SSH-Sitzung Ihrer VM:
[email protected]:~$ logout
Überprüfen Sie nun Ihr lokales Projektverzeichnis in Ihrem Hostsystem. Sie werden sehen, dass die gleiche Datei auch auf dem Host-Rechner erstellt wird.
[email protected]:~/myvagrants$ ls test.txt Vagrantfile
3.6. Status der virtuellen Maschinen anzeigen
Um den Status einer virtuellen Maschine in einer virtuellen Umgebung anzuzeigen, führen Sie Folgendes aus:
$ vagrant status
Beispielausgabe:
Current machine states: default running (virtualbox) The VM is running. To stop this VM, you can run `vagrant halt` to shut it down forcefully, or you can run `vagrant suspend` to simply suspend the virtual machine. In either case, to restart it again, simply run `vagrant up`.
Wie Sie oben sehen, habe ich nur eine VM und sie läuft jetzt.
Wenn die VM ausgeschaltet ist, erhalten Sie die folgende Ausgabe:
Current machine states: default poweroff (virtualbox) The VM is powered off. To restart the VM, simply run `vagrant up`aus
3.7. Status aller virtuellen Umgebungen anzeigen
Wir können die Informationen über alle bekannten virtuellen Umgebungen auf unserem System mit dem folgenden Befehl anzeigen:
$ vagrant global-status
Beispielausgabe:
id name provider state directory ------------------------------------------------------------------------- 2086482 default virtualbox poweroff /home/sk/myvagrants The above shows information about all known Vagrant environments on this machine. This data is cached and may not be completely up-to-date (use "vagrant global-status --prune" to prune invalid entries). To interact with any of the machines, you can go to that directory and run Vagrant, or you can use the ID directly with Vagrant commands from any directory. For example: "vagrant destroy 1a2b3c4d"
Der obige Befehl listet die VM-ID, den Namen, den Anbieter, den Status der VM und das Verzeichnis der virtuellen Umgebung auf.
Manchmal wird die Ausgabe möglicherweise zwischengespeichert und ist möglicherweise nicht korrekt. Führen Sie also den folgenden Befehl aus, um die ungültigen Einträge zu entfernen und den aktuellen Status der virtuellen Umgebung abzurufen:
$ vagrant global-status --prune
3.8. Virtuelle Maschinen anhalten
Führen Sie zum Anhalten einer laufenden VM Folgendes aus:
$ vagrant suspend
Beispielausgabe:
==> default: Saving VM state and suspending execution…
3.9. Virtuelle Maschinen fortsetzen
Um eine angehaltene VM in der aktuellen virtuellen Umgebung fortzusetzen, führen Sie Folgendes aus:
$ vagrant resume
Beispielausgabe:
==> default: Resuming suspended VM... ==> 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: Machine booted and ready! ==> default: Machine already provisioned. Run `vagrant provision` or use the `--provision` ==> default: flag to force provisioning. Provisioners marked to run always will still run.
3.10. Starten Sie virtuelle Maschinen neu
So starten Sie eine laufende VM neu:
$ vagrant reload
Dieser Befehl fährt die VM ordnungsgemäß herunter und startet sie neu.
3.11. Virtuelle Maschinen anhalten/herunterfahren
Gehen Sie wie folgt vor, um eine laufende VM anzuhalten oder herunterzufahren:
$ vagrant halt
3.12. Virtuelle Maschinen löschen
Um alle Ablaufverfolgungen einer VM zu stoppen und zu löschen, führen Sie Folgendes aus:
$ vagrant destroy
Geben Sie y
ein und drücken Sie ENTER, um die virtuelle Maschine zu löschen.
Wenn Sie die VM ohne Bestätigung löschen möchten, führen Sie Folgendes aus:
$ vagrant destroy -f
3.13. Virtuelle Maschinen zurücksetzen
Manchmal möchten Sie Ihre virtuelle Maschine möglicherweise auf ihren ursprünglichen Zustand zurücksetzen, ohne die Box tatsächlich zu löschen. Dies kann hilfreich sein, um eine saubere virtuelle Umgebung bereitzustellen, ohne immer wieder eine Vagrant-Box herunterladen zu müssen.
Um eine virtuelle Maschine in ihren ursprünglichen Zustand zurückzusetzen, tun Sie einfach:
$ vagrant destroy
$ vagrant up
Der erste Befehl fährt die laufende virtuelle Maschine herunter und löscht alle ihr zugeordneten Ressourcen. Und der zweite Befehl erstellt eine neue, frische virtuelle Maschine unter Verwendung der vorhandenen Vagrant-Box.
Weitere Einzelheiten finden Sie unter folgendem Link:
- So setzen Sie die Vagrant Virtual Machine auf den ursprünglichen Zustand zurück
3.14. Führen Sie Vagrant-Befehle von jedem Verzeichnis aus
Normalerweise starten, stoppen, laden und löschen wir eine Vagrant-Maschine aus dem Verzeichnis ihres Projekts, richtig? Ja! Wir können jedoch Vagrant-Befehle von jedem Verzeichnis aus ausführen, indem wir die ID des Vagrant-Rechners verwenden.
Führen Sie den folgenden Befehl aus, um die ID des Vagrant-Computers zu finden:
$ vagrant global-status
Beispielausgabe:
id name provider state directory ---------------------------------------------------------------------- ddc1a10 default libvirt shutoff /home/sk/Vagrant/Ubuntu2004 f4904ad default libvirt shutoff /home/sk/Vagrant/Archlinux 831f9c0 default libvirt shutoff /home/sk/Vagrant/Gentoo 3587422 default libvirt shutoff /home/sk/Vagrant/Rhel8 b2279ad default libvirt shutoff /home/sk/Vagrant/Almalinux8 The above shows information about all known Vagrant environments on this machine. This data is cached and may not be completely up-to-date (use "vagrant global-status --prune" to prune invalid entries). To interact with any of the machines, you can go to that directory and run Vagrant, or you can use the ID directly with Vagrant commands from any directory. For example: "vagrant destroy 1a2b3c4d"
Wie Sie in der obigen Ausgabe sehen, vagrant global-status
zeigt die Details aller bekannten virtuellen Umgebungen in meinem System an. Die erste Spalte in der obigen Ausgabe zeigt die ID jeder Vagrant-Maschine.
Sie können die ID direkt mit Vagrant-Befehlen aus jedem Verzeichnis verwenden. Um beispielsweise eine Vagrant-Maschine aus einem beliebigen Verzeichnis zu starten, können wir einfach Folgendes verwenden:
$ vagrant up b2279ad
Dadurch wird die vagabundierende Maschine mit der ID b2279ad
gestartet .
Ebenso können wir auch andere Vagrant-Befehle verwenden.
$ vagrant status b2279ad
$ vagrant ssh b2279ad
$ vagrant halt b2279ad
$ vagrant destroy b2279ad
3.15. Vagrant-Boxen auflisten
Führen Sie Folgendes aus, um alle verfügbaren Boxen aufzulisten, die mit Vagrant installiert wurden:
$ vagrant box list
Beispielausgabe:
hashicorp/bionic64 (virtualbox, 1.0.282)
Wenn Sie einige zusätzliche Boxdetails wie Autorenname, Website, Repository, Beschreibung usw. anzeigen möchten, verwenden Sie -i
Flagge:
$ vagrant box list -i
Beispielausgabe:
generic/alpine38 (virtualbox, 3.1.16) - Author: Ladar Levison - Website: https://roboxes.org/ - Artifacts: https://vagrantcloud.com/generic/ - Repository: https://github.com/lavabit/robox/ - Description: Basic virtual machine images, for a variety of operating systems/hypervisors, and ready to serve as base bxoes.
3.16. Überprüfen Sie, ob eine Vagrant-Box veraltet ist
Um zu überprüfen, ob die Box, die Sie in Ihrer Vagrant-Umgebung verwenden, veraltet ist, gehen Sie zum Verzeichnis der Vagrant-Umgebung, d. h. des Projekts,
$ cd myvagrants/
und führe aus:
$ vagrant box outdated Checking if box 'hashicorp/bionic64' version '1.0.282' is up to date…
3.17. Vagrant-Boxen aktualisieren
Wenn veraltete Boxen vorhanden sind, können Sie diese wie folgt aktualisieren:
$ vagrant box update
Beispielausgabe:
==> default: Checking for updates to 'hashicorp/bionic64' default: Latest installed version: 1.0.282 default: Version constraints: default: Provider: virtualbox ==> default: Box 'hashicorp/bionic64' (v1.0.282) is running the latest version.
3.18. Vagrant-Boxen herunterladen
Die vagrant init
Der Befehl initialisiert und startet die Vagrant-Umgebung, indem er die entsprechende Vagrant-Box herunterlädt, die in der Vagrant-Datei definiert ist.
Sie können die Vagrant-Box auch manuell herunterladen und ihre Vagrant-Datei bearbeiten und dann starten.
Um eine Vagrant-Box herunterzuladen, führen Sie Folgendes aus:
$ vagrant box add bento/debian-10.5
Der obige Befehl lädt die von Bento veröffentlichte Debian 10.5-Versionsbox herunter. Sie werden aufgefordert, den Anbieter (z. B. virtualbox oder vmware) auszuwählen, den Sie gerade verwenden. Wählen Sie einfach eine aus und drücken Sie die EINGABETASTE, um die Box herunterzuladen.
Beispielausgabe:
==> box: Loading metadata for box 'bento/debian-10.5' box: URL: https://vagrantcloud.com/bento/debian-10.5 This box can work with multiple providers! The providers that it can work with are listed below. Please review the list and choose the provider you will be working with. 1) parallels 2) virtualbox 3) vmware_desktop Enter your choice: 2 ==> box: Adding box 'bento/debian-10.5' (v202008.16.0) for provider: virtualbox box: Downloading: https://vagrantcloud.com/bento/boxes/debian-10.5/versions/202008.16.0/providers/virtualbox.box Download redirected to host: vagrantcloud-files-production.s3.amazonaws.com ==> box: Successfully added box 'bento/debian-10.5' (v202008.16.0) for 'virtualbox'
Sie können dies überprüfen, indem Sie die verfügbaren Felder auflisten:
$ vagrant box list
Beispielausgabe:
bento/debian-10.5 (virtualbox, 202008.16.0) hashicorp/bionic64 (virtualbox, 1.0.282)
Alle heruntergeladenen Vagrant-Boxen sind unter ~/.vagrant.d/boxes
verfügbar Verzeichnis in Ihrem Hostsystem.
3.19. Sehen Sie sich die Größe der Vagrant-Boxen an
Wie im vorherigen Abschnitt erwähnt, werden die heruntergeladenen Vagrant-Boxen in ~/.vagrant.d/boxes
gespeichert Verzeichnis.
Sie können die Liste aller heruntergeladenen Boxen in diesem Verzeichnis mit dem Befehl anzeigen:
$ ls ~/.vagrant.d/boxes almalinux-VAGRANTSLASH-8 generic-VAGRANTSLASH-debian10 archlinux-VAGRANTSLASH-archlinux generic-VAGRANTSLASH-gentoo centos-VAGRANTSLASH-8 generic-VAGRANTSLASH-rhel8
Um die Größe der einzelnen Vagrant-Kartons zu ermitteln, verwenden Sie du
Befehl mit -h
Flagge wie unten:
589M /home/sk/.vagrant.d/boxes/archlinux-VAGRANTSLASH-archlinux/20210601.24453/libvirt 589M /home/sk/.vagrant.d/boxes/archlinux-VAGRANTSLASH-archlinux/20210601.24453 589M /home/sk/.vagrant.d/boxes/archlinux-VAGRANTSLASH-archlinux 1.1G /home/sk/.vagrant.d/boxes/generic-VAGRANTSLASH-rhel8/3.3.2/libvirt 1.1G /home/sk/.vagrant.d/boxes/generic-VAGRANTSLASH-rhel8/3.3.2 1.1G /home/sk/.vagrant.d/boxes/generic-VAGRANTSLASH-rhel8 1.6G /home/sk/.vagrant.d/boxes/generic-VAGRANTSLASH-gentoo/3.2.24/libvirt 1.6G /home/sk/.vagrant.d/boxes/generic-VAGRANTSLASH-gentoo/3.2.24 1.6G /home/sk/.vagrant.d/boxes/generic-VAGRANTSLASH-gentoo 1.6G /home/sk/.vagrant.d/boxes/centos-VAGRANTSLASH-8/2011.0/libvirt 1.6G /home/sk/.vagrant.d/boxes/centos-VAGRANTSLASH-8/2011.0 1.6G /home/sk/.vagrant.d/boxes/centos-VAGRANTSLASH-8 998M /home/sk/.vagrant.d/boxes/generic-VAGRANTSLASH-debian10/3.3.4/libvirt 998M /home/sk/.vagrant.d/boxes/generic-VAGRANTSLASH-debian10/3.3.4 998M /home/sk/.vagrant.d/boxes/generic-VAGRANTSLASH-debian10 628M /home/sk/.vagrant.d/boxes/almalinux-VAGRANTSLASH-8/8.4.20210724/libvirt 628M /home/sk/.vagrant.d/boxes/almalinux-VAGRANTSLASH-8/8.4.20210724 629M /home/sk/.vagrant.d/boxes/almalinux-VAGRANTSLASH-8 6.4G /home/sk/.vagrant.d/boxes
Um die Gesamtnutzung der Zusammenfassung anzuzeigen, führen Sie Folgendes aus:
$ du -sh ~/.vagrant.d/boxes 6.4G /home/sk/.vagrant.d/boxes
3.20. Heruntergeladene .box-Datei zu Vagrant hinzufügen
Viele Linux-Distributionen werden über vorkonfigurierte Vagrant-Boxen vertrieben. So kann man sich schnell die Vagrant-Box schnappen und mit der jeweiligen Virtualisierungsanwendung ausführen. Weitere Einzelheiten finden Sie in der folgenden Anleitung:
- Wie man eine heruntergeladene .box-Datei zu Vagrant in Linux hinzufügt
3.21. Erstellen Sie eine virtuelle Maschine mit der Vagrant-Box
Um eine neue VM mit der neu heruntergeladenen Box zu erstellen, gehen Sie in das Verzeichnis Ihres Projekts und initialisieren Sie die Vagrant-Umgebung mit dem Befehl:
$ vagrant init
Kopf hoch :Vorhandene Vagrant-Datei löschen, bevor eine neue Vagrant-Umgebung initialisiert wird.
Dadurch wird eine neue Vagrant-Datei im aktuellen Verzeichnis erstellt.
Bearbeiten Sie die Vagrant-Datei, aktualisieren Sie die VM-Details und ersetzen Sie die folgende Zeile:
Vagrant.configure("2") do |config| [...] config.vm.box = "base" [...]
mit folgendem:
config.vm.box = "bento/debian-10.5"
Sie können die Version für die neue VM explizit angeben, indem Sie die folgenden Zeilen hinzufügen:
config.vm.box = "bento/debian-10.5" config.vm.box_version = "1.0"
Sie können sogar die Download-URL angeben:
config.vm.box = "bento/debian-10.5" config.vm.box_version = "1.0" config.vm.box_url = "https://app.vagrantup.com/bento/boxes/debian-10.5/"
Erstellen und starten Sie nun die VM basierend auf dieser Vagrantfile mit dem Befehl:
$ vagrant up
Alternativ können Sie den Boxnamen direkt beim Initialisieren der Vagrant-Umgebung angeben. Dies kann nützlich sein, wenn Sie mehr als eine Vagrant-Box haben.
Listen Sie zuerst die verfügbaren Vagrant-Boxen mit dem Befehl auf:
$ vagrant box list
Beispielausgabe:
Fedora33 (libvirt, 0) archlinux/archlinux (virtualbox, 20201201.10292) fedora33 (virtualbox, 0) generic/alpine38 (virtualbox, 3.1.16) oraclelinux/7 (virtualbox, 7.9.184) oraclelinux/8 (libvirt, 8.3.183)
Angenommen, Sie möchten eine virtuelle Maschine aus einer Box namens "generic/alpine38" erstellen. Führen Sie dazu einfach Folgendes aus:
$ vagrant init generic/alpine38
Dieser Befehl erstellt eine neue Vagrant-Datei und initialisiert die Vagrant-Umgebung mit der angegebenen Box-Konfiguration. Keine Notwendigkeit, Vagrantfile manuell zu bearbeiten und die Boxdetails zu aktualisieren.
Als nächstes starten Sie die virtuelle Maschine mit dem Befehl:
$ vagrant up
3.22. Verwenden Sie Vagrant mit dem KVM-Anbieter Libvirt
Wie ich bereits erwähnt habe, verwendet Vagrant standardmäßig Virtualbox, um virtuelle Maschinen auszuführen. Es ist auch möglich, Vagrant anzuweisen, einen anderen Anbieter zu verwenden, beispielsweise Libvirt KVM , um VMs mit vagrant-libvirt auszuführen Plugin. Dieses Plugin fügt den Libvirt-Anbieter zu Vagrant hinzu und ermöglicht es Vagrant, Maschinen über Libvirt zu steuern und bereitzustellen. Um zu erfahren, wie Sie libvirt als Vagrant-Anbieter verwenden, lesen Sie die folgende Anleitung:
- So verwenden Sie Vagrant mit dem Libvirt KVM-Anbieter
3.23. Konfigurieren Sie das Netzwerk in Vagrant
Um den Netzwerkzugriff zwischen Gastcomputern und dem Hostsystem bereitzustellen, bietet Vagrant die folgenden drei Optionen an:
- Portweiterleitung
- Privates Netzwerk (Host-Only-Netzwerk)
- Öffentliches Netzwerk (überbrücktes Netzwerk)
Jede Option hat ihre eigenen Höhen und Tiefen. Sie können eine oder alle Vagrant-Netzwerkoptionen konfigurieren, wie in der folgenden Anleitung beschrieben:
- So konfigurieren Sie das Netzwerk in Vagrant
3.24. Finden Sie die IP-Adresse des Vagrant-Computers vom Hostsystem
Um die IP-Adresse eines Vagrant-Rechners zu finden, gehen wir normalerweise per SSH hinein und finden seine IP-Adresse mit ip
oder ifconfig
Befehle. Wir können die IP-Adresse eines laufenden Vagrant-Rechners auch direkt vom Host abrufen, wie im folgenden Link beschrieben:
- So finden Sie die IP-Adresse eines Vagrant-Computers vom Host
3.25. Erhöhen Sie den Arbeitsspeicher und die CPU auf dem Vagrant-Computer
Haben Sie Leistungsprobleme mit Ihrem Vagrant-Gerät? Es liegt wahrscheinlich an unzureichendem Arbeitsspeicher oder CPU. Fügen Sie der Vagrant-Maschine einfach mehr RAM und CPU-Kern hinzu, um die Leistung zu verbessern, wie im folgenden Link gezeigt.
- So erhöhen Sie Speicher und CPU auf einer Vagrant-Maschine
3.26. Entfernen Sie veraltete Vagrant-Boxen
Möglicherweise haben Sie mehrere Versionen von Vagrant-Boxen heruntergeladen und einige davon sind möglicherweise ziemlich veraltet! Wenn sie nicht mehr benötigt werden, können Sie die alten Versionen installierter Vagrant-Boxen sicher löschen, wie im folgenden Link beschrieben.
- So löschen Sie veraltete Vagrant-Boxen unter Linux
3.27. Vagrant-Boxen endgültig löschen
Um eine vagabundierende Box zu entfernen, zum Beispiel hashicorp/bionic64, führen Sie Folgendes aus:
$ vagrant box remove hashicorp/bionic64
Geben Sie y
ein und drücken Sie ENTER
Löschen bestätigen:
Box 'hashicorp/bionic64' (v1.0.282) with provider 'virtualbox' appears to still be in use by at least one Vagrant environment. Removing the box could corrupt the environment. We recommend destroying these environments first: default (ID: 20864823c72f45568d251070b5ce2661) Are you sure you want to remove this box? [y/N] y Removing box 'hashicorp/bionic64' (v1.0.282) with provider 'virtualbox'…
Wenn Sie den Namen der Box nicht kennen, führen Sie einfach den folgenden Befehl aus, um alle installierten Boxen aufzulisten:
$ vagrant box list
Zu diesem Zeitpunkt sollten Sie die Grundlagen der Vagrant-Nutzung gelernt haben. Vagrant ist ein weites Thema und ich werde versuchen, so viel wie möglich in unseren kommenden Artikeln zu behandeln. Bleiben Sie dran!
4. Vagrant-Fehlerbehebung
In diesem Abschnitt werden einige allgemeine Vagrant-Probleme behandelt.
4.1. Vagrant konnte in einem sehr frühen Stadium nicht initialisiert werden
Lässt sich Ihre Vagrant-Maschine nicht starten? Keine Bange! Dies ist eines der häufigsten Vagabunden-Probleme. Dies kann an veralteten Plugins liegen oder das Vagrant HOME-Verzeichnis wurde möglicherweise an einen anderen Ort verschoben. Um dieses Problem zu beheben, lesen Sie die folgende Anleitung:
- So beheben Sie den Fehler „Vagrant konnte in einem sehr frühen Stadium nicht initialisiert werden“ in Linux
4.2. Zugriff auf Speicherdatei nicht möglich, Zugriff verweigert Fehler in KVM Libvirt
Manchmal kann es vorkommen, dass Sie einen Vagrant-Rechner nicht starten und am Ende einen Fehler wie diesen erhalten - Failed to start domain 'Archlinux_default' error: Cannot access storage file '/home/sk/.local/share/libvirt/images/Archlinux_default.img' (as uid:107, gid:107): Permission denied
.
Dieser Fehler tritt normalerweise auf, wenn qemu
Der Benutzer hat keine Leseberechtigung für das Libvirt-Speicherverzeichnis. Um dieses Problem zu beheben, lesen Sie die folgende Anleitung:
- [Gelöst] Zugriff auf Speicherdatei nicht möglich, Zugriff verweigert Fehler in KVM Libvirt
5. Fazit
In diesem umfassenden Leitfaden haben wir gelernt, was Vagrant ist, und die Vagrant-Terminologien wie Vagrant-Boxen, Vagrantfile und Bereitstellungstools. Wir haben auch gelernt, wie man Vagrant auf Linux-Betriebssystemen installiert, und schließlich haben wir einige grundlegende Vagrant-Befehle besprochen, um virtuelle Maschinen über die Befehlszeile in Linux zu erstellen und zu verwalten.
Wenn Sie ein DevOps-Ingenieur sind, ist es sehr nützlich, zu wissen, wie man Vagrant verwendet. Vagrant ist eines der wichtigsten Tools, die Sie auf Ihrem System haben sollten.