Vagrant

Ziele und Kompetenzen

  • Grundlagen zur automatisierten Virtualisierung kennen lernen

Motivation

Was ist Vagrant

  • Tool zum automatisierten Aufsetzen von virtuellen Entwicklungsumgebungen

  • Die Idee: Entwicklungsumgebung soll dem produktiven System so ähnliche wie möglich sein

  • Gedankenspiel: Wie groß wäre der Unterschied zwischen Ihrer Entwicklungsumgebung und dem Zielsystem?

  • Vagrant wurde in Ruby von Mitchel Hashimoto entwickelt

Anwendungsgebiete

  • Testen von Software in unterschiedlichen Umgebungen und Betriebssystemen

  • Workflows mit verschiedenen Configuration Management Tools testen (Chef, Puppet, Ansible)

  • Identische Umgebungen für unterschiedliche Entwickler / Team-Mitglieder aufsetzen

  • Testen von Multi-Server Use Cases automatisieren

Vorteile

  • Es werden sog. »Basis Images« genutzt, d.h. Betriebssystem muss nicht installiert werden

  • Einstellungen können konfiguriert werden

  • Ausführung von Automatisierungs-Tools wie Chef, Puppet oder Ansible

Nochmal zur Erinnerung

  • Wir möchten vermeidbare manuelle Tätigkeiten so gut wie möglich automatisieren

  • Wozu?

    • Zeitgewinn

    • Vermeidung von Fehlern

    • Reproduzierbarkeit

Grundlagen

Begriffe

  • Provider

    • Virtualisierungstechnologien: VirtualBox, Hyper-V, VMWare, Docker, AWS...)

  • Provisionier:

    • Configuration Management Tool (Chef, Puppet, Ansible)

  • Box / Vagrantbox

    • Vorlage zur Erstellung einer virtuellen Maschine (VM)

  • Vagrantfile:

    • Konfigurationsfile für Vagrant

Kommandos

  • box {add|remove|prune..} Fügt eine Box hinzu, entfernt diese etc.

  • global-status Status aller Vagrant-Umgebungen

  • init Initialisiert das aktuelle Verzeichnis für eine Box

  • halt Schaltet die virtuelle Maschinen(n) ab

  • provision Führt den Provisioner gegen die VMs aus

  • reload Neustart nach Änderungen

  • ssh Shell Zugriff auf die Maschine

  • up Erstellt und Startet die VM gemäß dem Vagrantfile

Standard Boxes

  • https://app.vagrantup.com/boxes/search

  • Öffentliche Boxes sind kostenlos

  • Persönlicher bzw. Unternehmens-Account ermöglicht das Speichern von privaten Boxes

Multi-Server Setup

Mehrere identische Maschinen möglich:

Port Forwarding

Gleiches Verhalten auf allen Maschinen

  • Standard-Ports auf den virtuellen Maschinen nutzbar

  • Ports vom Host-System werden weitergeleitet

IaC

Konfiguration am Beispiel der VMBox Einstellungen

Vagrant und Ansible

Ansible als Provisioner:

  • Vorteil Playbook kann automatisch gegen Box ausgeführt werden

Provisionierung

  • bootstrap.sh im Verzeichnis des Vagrantfile

Base Box erstellen

Am Beispiel VirtualBox

  • Jede in VirtualBox erstelle VM kann verwendet werden

  • Harte Anforderungen Seitens Vagrant

    • Der erste Netzwerkadapter muss zwingend ein NAT-Adapter sein

    • MAC Adresse der VM muss bekannt sein, wird später im Vagrantfile eingetragen (config.vm.base_mac)

Vagrant vs. Docker

  • Docker: Bauen, ausliefern und betreiben von verteilten Anwendungen

    • Container laufen im bzw. nutzen das Host-Betriebssystem

  • Vagrant: Leichtgewichtiges Tool um virtuelle Umgebungen zu konfigurieren und zu erstellen

    • Virtuelle Maschinen bringen Ihr Betriebssystem mit

    • Docker kann als Provider für Vagrant genutzt werden

Voraussetzungen zur Nutzung von Vagrant

  • Provider

    • Z.B. VirtualBox

  • Vagrant installieren

  • Vagrant Box downloaden

Last updated