Virtuelle Maschinen mit Vagrant

0
(0)

Vagrant, eine freie Anwendung in Ruby zum Erstellen und Verwalten von virtuellen Maschinen

Virtuelle Maschinen mit Vagrant

DevOps-Teams sehen sich zunehmend der Herausforderung gestellt, den Kunden neue Funktionen in kurzer Zeit zur Verfügung zu stellen, dabei stellen Cloud-Anbieter Lösungen durch skalierbare Plattformen mit Befehlszeilen- und API-Integrationen zur Verfügung. Mit nativen Tools können DevOps-Teams individuell angepasste Docker und Vagrant Lösungen für jeden Cloud-Provider bereitstellen.

Was ist Vagrant ?

Das Open-Source Projekt „Vagrant“ ist für den Aufbau kompletter Entwicklungsumgebungen konzipiert. Mit einem benutzerfreundlichen Workflow und dem Fokus auf Automatisierung. Zum Erstellen und Verwalten von Umgebungen mit virtuellen Maschinen (VM), und dies in einem einzigen Arbeitsablauf.

Vagrant bietet ein einheitliches Konfigurationsformat, mit einer Befehlszeile und einem gemeinsamen Provision-Provider, bereitgestellt für virtuelle Maschinen auf Hypervisoren oder als Cloud-VMs, für die Installation und Konfigurationen von Software.

Vagrant und Docker verfolgen dieselben Ziele, nämlich wiederholbare Umgebungen zu schaffen, das tun sie auf unterschiedliche, aber sich ergänzende Weise. In diesem Tutorial erfährst du, wie das quelloffene Werkzeug Vagrant zum fernsteuern bei der Virtualisierung eingesetzt werden kann.

Was ist Docker ?

Docker ermöglicht Software und unterstützende Konfigurationen in Images zu verpacken, die über mehrere Plattformen hinweg konsistent ausgeführt werden können. DevOps-Teams können mit Docker darauf setzen, dass die Software auf einem lokalen Arbeitsplatzrechner genauso läuft wie auf einer verwalteten Cloud-Plattform.

Die Kubernetes Plattform die auf Docker basiert, ermöglicht die Orchestrierung von Containern im umfangreichen Maßstab. Darüber hinaus unterstützten Cloud-Plattformen die Möglichkeit, Docker-Container in seinen Platform-as-a-Service (PaaS) zu betreiben.

Vagrant Installation

Vagrant ist in den Standard-Repos der meisten Linux-Distributionen enthalten. Sollte das Paket einmal nicht im Repository sein, oder es steht eine neuere Version im Vordergrund, so findet man die Binary’s auf der offiziellen Webseite mit den Links zum Herunterladen der Pakete für macOS, Windows und Linux.

Vagrant für Linux

Unter Debian und Ubuntu wird Vagrant wie folgt bereitgestellt.

$ wget -O- https://apt.releases.hashicorp.com/gpg | sudo gpg --dearmor -o /usr/share/keyrings/hashicorp-archive-keyring.gpg
$ echo "deb [signed-by=/usr/share/keyrings/hashicorp-archive-keyring.gpg] https://apt.releases.hashicorp.com $(lsb_release -cs) main" | sudo tee /etc/apt/sources.list.d/hashicorp.list
$ sudo apt update && sudo apt install vagrant

  eine aktuelle Version von Ruby kann erforderlich sein.

Vagrant anwenden

Vagrant speichert und liest sämtliche Informationen für die zu erstellenden VMs aus der Konfigurationsdatei „Vagrantfile“. Dazu legt man erst ein Verzeichnis an, in diesem ein neues Vagrant Projekt erstellt wird.

Der erste Befehl vagrant init erstellt ein Vagrantfile im aktuellen Ordner, welche dann den eigenen Anforderungen entsprechend bearbeitet werden kann.

$ vagrant init
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.

Als Standard provider wird VirtualBox verwendet. In der Konfigurationsdatei bei config.vm.provider kann angeben werden, welcher provider angewendet werden soll um eine VM oder ein Container zu erstellen.

Vagrant mit docker

config.vm.provider "docker" do |d|
    d.image = "helloworld"
end

Hier wird docker als provider verwendet und die Variable d für den Container wird festgelegt mit welcher weitere Einstellungen vorgenommen werden können (zB. docker-Images).

Vagrant mit Hyper-V

Nutzt man in Windows Hyper-V ist als provider „hyperv“ zu wählen.

config.vm.provider "hyperv" do |h|
  h.vm_integration_services = {
    guest_service_interface: true,
    CustomVMSRV: true
  }
end

Vagrant Box Installation

Anstatt eine virtuelle Maschine von Grund auf zu erstellen, verwendet Vagrant ein Basis-Image, um eine virtuelle Maschine schnell zu klonen. Diese Basisbilder werden in Vagrant als „Box“ bezeichnet. Die Angabe der für eine Vagrant-Umgebung zu verwendenden Box ist immer der erste Schritt nach dem Erstellen einer neuen Vagrant-Datei. Hier als Hostsystem wird Windows mit Hyper-V eingesetzt.

vagrant box add hashicorp/bionic64

Vagrant fordert uns nun auf ein provider zu wählen.

==> box: Loading metadata for box 'hashicorp/bionic64'
    box: URL: https://vagrantcloud.com/hashicorp/bionic64
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) hyperv
2) virtualbox
3) vmware_desktop

Als provider wähle 1) für Hyper-V was in Windows aktiviert sein muss.

Vagrant.configure("2") do |config|
  config.vm.box = "generic/debian12"
  config.vm.box_url = "https://vagrantcloud.com/hashicorp/bionic64"
end

Die Konfigurationsdatei Vagrantfile

Nun ein Command Prompt als Administrator öffnen, in Windows 11 ist es Windows Terminal, und den folgenden Befehl ausführen.

vagrant up --provider=hyperv

  Möglicherweise erscheint zusätzlich zur Bestätigung ein Hinweis.

Bringing machine 'default' up with 'hyperv' provider...
==> default: Verifying Hyper-V is enabled...
The Hyper-V cmdlets for PowerShell are not available! Vagrant
requires these to control Hyper-V. Please enable them in the
"Windows Features" control panel and try again.

Sollte Hyper-V noch nicht vorliegen, ist die Hyper-V-Plattform und Hyper-V-Verwaltungstools für PowerShell wie folgt bereitzustellen.

Die Windows-Features werden aktiviert, mit Start + R den Befehlcontrol appwiz.cpl,,2ausführen.

Das Cmdlet kann auch aus der PowerShell aktiviert werden.

Enable-WindowsOptionalFeature -Online -FeatureName Microsoft-Hyper-V -All

Die PowerShell als Administrator starten. Nach der aktivierung muss Windows neu gestartet werden.

Virtuelle Maschine Starten

Im einfachsten Fall ist das bereits alles, was für das Erzeugen und Starten einer virtuellen Maschine erforderlich ist. Nun folgt der Aufruf in der Konsole mitvagrant up

$ vagrant up
Bringing machine 'default' up with 'hyperv' provider...
==> default: Verifying Hyper-V is enabled...
==> default: Verifying Hyper-V is accessible...
==> default: Importing a Hyper-V instance
    default: Creating and registering the VM...
    default: Successfully imported VM
    default: Configuring the VM...
    default: Setting VM Enhanced session transport type to disabled/default (VMBus)
==> default: Starting the machine...
==> default: Waiting for the machine to report its IP address...
    default: Timeout: 120 seconds
    default: IP: 172.19.29.83
==> default: Waiting for machine to boot. This may take a few minutes...
    default: SSH address: 172.19.29.83:22
    default: SSH username: vagrant
    default: SSH auth method: private key
    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!

Um zu überprüfen, ob die VM wirklich läuft, genügt das Kommando.

vagrant status

Es wird als Status wie erwartet running gezeigt und gibt zudem einige Hinweise aus. Wie man die virtuelle Maschine wieder beenden kann, zeigt der Befehl wie folgt.

vagrant halt

Amelden

Für den Zugriff auf die virtuelle Maschine leitet Vagrant den Port 22 auf den Port 2222 des Hostsystems weiter, sodass sich eine SSH-Verbindung herstellen lässt. Benutzernamen und Port müssen nicht stets von Hand eingeben werden, es steht zudem ein Kommando zur Verfügung, das die Anmeldung automatisch vornimmt.

vagrant ssh

Die Verbindung zur virtuellen Maschine ist hergestellt, die VM kann ohne Einschränkungen verwendet und für weitere Anforderungen konfiguriert werden. Das Verzeichnis des Hostsystems, das die Datei „Vagrantfile“ enthält, bindet Vagrant in der virtuellen Maschine als Pfad /vagrant ein. Damit ist ein einfacher Austausch von Dateien zwischen Host und Gast möglich.

Vagrant stellt zahlreiche Kommands bereit. Ein Blick in die Vagrant Help Ausgabe mit vielen Kommands lohnt sich.

vagrant -h

Zu den Allgemeinen Kommands stehen weitere Unterbefehle zur Verfügung, die jedoch entweder komplexer sind oder nicht häufig verwendet werden. Um alle Unterbefehle in der Konsole auszugeben, führe den Befehlvagrant list-commandsaus.

Vagrant Box

Auf der Webseite von Vagrant wird eine Auswahl von Box Abbilder im Katalog zum direkten Download zur Verfügung gestellt. Alternativ gilt die darauf spezialisierte Webseite Vagrantbox.es als weitere Anlaufstelle.

Eine Vagrant Box auf Debian 12 wird wie folgt bereitgestellt.

vagrant init generic/debian12
vagrant up

Die Vagrant Box auf Rocky Linux 9 erhält man mit diesen zwei Zeilen.

vagrant init generic/rocky9
vagrant up

Hyper-V Manager

Bei der nutzung von Hyper-V als provider für Vagrant, können die erstellen VM im Hyper-V Manager verwaltet werden.

Wie hilfreich war dieser Beitrag?

Klicke auf die Sterne um zu bewerten!

Durchschnittliche Bewertung 0 / 5. Anzahl Bewertungen: 0

Bisher keine Bewertungen! Sei der Erste, der diesen Beitrag bewertet.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert