Was ist Vagrant?

Aus xinux.net
Zur Navigation springen Zur Suche springen

Basics

  • Vagrant ist eine freie Ruby-Anwendung zum Erstellen und Verwalten virtueller Maschinen.
  • Vagrant ermöglicht einfache Softwareverteilung
  • Es wird insbesondere in der Software- und Webentwicklung eingesetzt
  • Und dient als Wrapper zwischen Virtualisierungssoftware wie:
    • VirtualBox
    • KVM/QEMU
    • VMware
    • Hyper-V
  • Und Software-Configuration-Management-Anwendungen beziehungsweise Systemkonfigurationswerkzeugen wie
    • Chef
    • Saltstack
    • Puppet
    • Ansible

Funktionsweise und Konzepte

Projektinitialisierung

  • Um einen Ordner zu initialisieren, muss man den Ordner anwählen und den Befehl vagrant init ausführen
  • Es wird dann ein sogenanntes „Vagrantfile“ mit Beispielen und Erklärungen erzeugt
  • Durch den Zusatz vagrant init --minimal wird eine minimale Version des Vagrantfiles ohne Beispiele und Erklärungen erzeugt.
  • Der Zusatz --provider bewirkt das ein spezielles Virtualisierungssystem genommen wird.
  • Die Vagrant Datei kann man mit einem normales Editor anpassen.

Boxen

  • Boxen sind bei Vagrant vorkonfigurierte (Vorlagen) Virtuelle Maschinen.
  • Dies soll den Prozess der Softwareverteilung und der Entwicklung beschleunigen.
  • Jede Box, die von dem Nutzer benutzt wurde, wird auf dem Computer gespeichert.
  • Boxen können explizit durch den Befehl vagrant box add [box-name] oder vagrant box add [box-url] heruntergeladen werden
  • Sie können durchvagrant box remove [box-name] entfernt werden.
  • Ein „box-name“ ist dabei durch Konvention wie folgt aufgebaut: „Entwickler/Box“, zum Beispiel „hashicorp/precise32“.
  • Vagrant Cloud dient dabei als Austauschplattform für die Suche nach Boxen und das Einstellen von eigenen Boxen.
  • Wird nur ein box-name angegeben, wird davon ausgegangen, dass die Box lokal vorhanden ist.
  • Ansonsten wird in der Vagrant Cloud nach der Box gesucht.

Konfiguration

  • Die gesamte Konfiguration erfolgt im Vagrantfile, das ein spezielles Ruby-Programm enthält.

Provisioning

  • Beim Provisioning ruft Vagrant andere Programme auf, zumeist SCM-Software wie Ansible oder die Shell.
  • Dies automatisiert die Konfiguration.
  • In Vagrant stehen folgende Provisioner zur Verfügung:
    • File
    • Shell
    • Ansible
    • CFEngine
    • Chef Solo
    • Chef Client
    • Docker
    • Puppet Apply
    • Puppet Agent
    • Salt