Zum Inhalt springen
_CORE
KI & Agentensysteme Unternehmensinformationssysteme Cloud & Platform Engineering Datenplattform & Integration Sicherheit & Compliance QA, Testing & Observability IoT, Automatisierung & Robotik Mobile & Digitale Produkte Banken & Finanzen Versicherungen Öffentliche Verwaltung Verteidigung & Sicherheit Gesundheitswesen Energie & Versorgung Telko & Medien Industrie & Fertigung Logistik & E-Commerce Retail & Treueprogramme
Referenzen Technologien Blog Know-how Tools
Über uns Zusammenarbeit Karriere
CS EN DE
Lassen Sie uns sprechen

Vagrant — Eine einheitliche Entwicklungsumgebung für das gesamte Team

20. 01. 2014 2 Min. Lesezeit CORE SYSTEMSinfrastructure
Vagrant — Eine einheitliche Entwicklungsumgebung für das gesamte Team

Jeder Entwickler im Team hatte ein anderes Betriebssystem, eine andere Java-Version, einen anders konfigurierten Tomcat. Das Ergebnis? „Works on my machine” wurde zu unserem inoffiziellen Motto. Dann entdeckten wir Vagrant und alles änderte sich.

Das Problem: Snowflake-Umgebungen

In einem Team von zwölf Entwicklern hatten wir mindestens fünf verschiedene Konfigurationen. Jemand auf Windows 7, jemand auf Windows 8, zwei Kollegen auf Ubuntu, einer auf Fedora. Jeder hatte eine andere JDK-Version, andere Umgebungsvariablen, einen anderen Weg, die lokale Datenbank zu starten. Das Onboarding eines neuen Kollegen dauerte zwei Tage — zwei Tage Umgebung einrichten, richtige Bibliotheksversionen finden, mysteriöse Fehler lösen.

Vagrant: Eine virtuelle Maschine als Code

Vagrant von HashiCorp ermöglicht es, eine Entwicklungsumgebung in einer einzigen Datei zu beschreiben — dem Vagrantfile. Es ist eine Ruby-DSL, aber man muss kein Ruby können. Ein paar Zeilen und man hat eine virtuelle Maschine mit exakt definierter Software.

Vagrant.configure("2") do |config|
  config.vm.box = "ubuntu/trusty64"
  config.vm.network "forwarded_port", guest: 8080, host: 8080
  config.vm.network "forwarded_port", guest: 5432, host: 5432
  config.vm.provision "shell", path: "provision.sh"
  config.vm.provider "virtualbox" do |vb|
    vb.memory = "2048"
    vb.cpus = 2
  end
end

Das Provisioning-Skript installiert JDK 7, Tomcat 7, PostgreSQL 9.3 und Maven 3.1 — genau die Versionen, die wir brauchen. Keine Überraschungen, keine Abweichungen. Ein neuer Entwickler kommt, klont das Repo, führt vagrant up aus und hat innerhalb von 10 Minuten eine laufende Umgebung.

Multi-Machine-Setup

Für komplexere Projekte ermöglicht Vagrant die Definition mehrerer Maschinen in einem Vagrantfile. Jede Maschine hat ihre eigene IP in einem privaten Netzwerk. Damit simulieren wir die Produktionstopologie lokal — Anwendungsserver + Datenbankserver + Message Broker.

Geteilte Ordner verknüpfen den Quellcode vom Host-System in die VM. Der Entwickler schreibt Code in seiner bevorzugten IDE auf dem Host; die Kompilierung findet in der VM statt.

Provisioning: Shell vs. Chef vs. Puppet

Vagrant unterstützt mehrere Provisioner. Wir begannen mit einem Shell-Skript — für jeden verständlich. Wichtig ist, dass das Provisioning idempotent ist — man kann es mehrfach ausführen, ohne Nebenwirkungen. Wenn eine neue Abhängigkeit hinzukommt, genügt ein vagrant provision und alle haben sie.

Probleme

Performance: VirtualBox auf älteren Laptops läuft langsam. Geteilte Ordner über Guest Additions sind langsam — NFS ist besser, funktioniert aber unter Windows nicht einfach. Box-Größe: Über ein Gigabyte; der Download dauert. Docker vs. Vagrant: Wir hören von Docker und fragen uns, ob Container VMs ersetzen werden. Vorerst sind es komplementäre Werkzeuge.

Vagrant hat uns Hunderte Stunden gespart

Seit der Einführung von Vagrant ist das Onboarding eine Sache von Minuten, nicht Tagen. Alle arbeiten auf einer identischen Umgebung. Wenn Ihr Team größer als zwei Personen ist, ist Vagrant eine Investition, die sich am ersten Tag auszahlt.

vagrantvirtualboxautomatizacevývoj
Teilen:

CORE SYSTEMS

Wir bauen Kernsysteme und KI-Agenten, die den Betrieb am Laufen halten. 15 Jahre Erfahrung mit Enterprise-IT.

Brauchen Sie Hilfe bei der Implementierung?

Unsere Experten helfen Ihnen bei Design, Implementierung und Betrieb. Von der Architektur bis zur Produktion.

Kontaktieren Sie uns