Blog

Drei Projekte und Sie automatisieren: Vagrant Entwicklungsboxen

Bram Neijt

Aktualisiert Oktober 22, 2025
6 Minuten

Einführung

Wir alle kennen die Regel in der einen oder anderen Form: dreimal und Sie automatisieren. Und obwohl ich versuche, sie anzuwenden, ertappe ich mich dabei, dass ich einige Dinge bei jedem neuen Projekt wiederhole, wie z.B. die Erstellung eines neuen CI-Servers. Eine Lösung wäre ein zentraler Server für alle Ihre Projekte, aber die Kunden sind meist nicht bereit, sich auf Dienste außerhalb ihres Netzwerks zu verlassen, was bedeutet, dass Sie oft eine lokale Lösung für jedes Projekt erstellen müssen. Nachdem ich das dreimal gemacht hatte, beschloss ich, ein Repository anzulegen, in dem Skripte zur Automatisierung der Einrichtung von Entwicklungsmaschinen gespeichert werden. Mit einem einzigen Befehl erhalten Sie ein voll funktionsfähiges System, das Sie nur noch an Ihre Bedürfnisse anpassen müssen. Dieser Blog zeigt Ihnen, wie Sie schnell einen Jenkins-Server auf einer lokalen virtuellen Maschine einrichten können.

Erste Schritte

Um alles in Gang zu bringen, benötigen Sie mindestens die folgenden beiden Tools

  1. VirtualBox für die Virtualisierung. VirtualBox ist ein vollständiges Virtualisierungssystem, mit dem Sie virtuelle Maschinen einfach verwalten können. Die virtuellen Maschinen können jedoch auch über einen Manager mit einer Befehlszeilenschnittstelle ausgeführt werden. Das nächste Tool, vagrant, verwaltet die Konfiguration der virtuellen Maschinen auf diese Weise.
  2. Vagrant für die automatisierte Erstellung und Bereitstellung von Maschinen. Mit Vagrant können Sie eine virtuelle Maschine in einer Vagrantdatei definieren, ähnlich wie eine Makefile für VirtualBox-basierte virtuelle Maschinen. Eine Vagrantdatei enthält Informationen darüber, wie die virtuelle Maschine einzurichten ist, z.B. welche Datei als Dateisystem-Image zu verwenden ist, welche Netzwerk- und Speicherkonfiguration die virtuelle Maschine benötigt und wie viel Speicher verwendet werden soll. Auch wenn Vagrant die Maschinen headless bootet und ausführt, hält Sie nichts davon ab, die Maschine jederzeit über die VirtualBox-Benutzeroberfläche zu starten, zu exportieren oder zu klonen, wenn Ihnen danach ist.
  3. Git, da wir die Konfigurationsdateien auf Github abgelegt haben.

Nachdem Sie die erforderlichen Tools installiert haben, klonen Sie das vagrantboxes-Repository git clone git://github.com/xebia/vagrantboxes.git cd vagrantboxes

Konfigurieren Sie die gewünschte VM

Im Repository finden Sie eine Vagrant-Datei, die die Eigenschaften der VM konfiguriert: Speicher, zu verwendendes Basis-Image und wie die Bereitstellung erfolgen soll. Vagrant importiert das Basis-Image, konfiguriert die VM, bootet sie und startet dann Puppet, um die Maschine bereitzustellen. Puppet erhält die Anweisung, die Datei manifests/default.pp zu laden, um das System bereitzustellen. Wir müssen diese Datei bearbeiten, um die gewünschten Elemente in die VM aufzunehmen.Öffnen Sie manifests/defaults.pp in einem Texteditor. Diese Datei ist ein Puppet-Manifest, in dem wir konfigurieren, welche Dinge in die VM aufgenommen werden sollen. Alle erwähnten Include-Anweisungen verweisen auf ein Verzeichnis innerhalb des Verzeichnisses modules des Repositorys. Standardmäßig ist alles außer dem Modul "update the APT cache" durch ein Rautezeichen (#) auskommentiert.Wir möchten Jenkins installiert haben, also entfernen wir das Kommentarzeichen vor der Anweisung include jenkins. Speichern Sie die Datei und wir sind bereit, die VM zu starten.Öffnen Sie ein Terminal und wechseln Sie in das Git-Stammverzeichnis. Sie sollten sich neben der Vagrant-Datei befinden und dann vagrant up ausführen. Dadurch wird die VM importiert und die Installation von Jenkins gestartet. Achten Sie genau auf die Hinweiszeilen und bedenken Sie, dass die angegebene IP-Adresse wahrscheinlich anders lautet:

notice: Scope(Class[Jenkins]): Jenkins will be at https://172.28.128.5:8080/ after a reboot
notice: Scope(Class[main]): You can connect to your guest services via: 172.28.128.5
notice: Scope(Class[main]): You reboot by using 'sudo reboot' after logging in with: vagrant ssh

Die virtuelle Maschine wird mit zwei Netzwerkgeräten gestartet: ein NAT, über das die VM mit dem Internet in Kontakt treten kann, und ein Host-only-Netzwerk mit DHCP. Wir tun dies, damit Sie die VM von Ihrem lokalen Rechner aus kontaktieren können (der Host-Only-Netzwerkadapter), ohne jeden der Ports, die Sie verwenden möchten, in der Vagrant-Datei definieren zu müssen. Wenn Sie diese Zeilen übersehen haben und herausfinden möchten, wo sich Ihr Rechner befindet, können Sie sich über den lokal umgeleiteten SSH-Port mit vagrant ssh anmelden. Geben Sie an der Eingabeaufforderung den Befehl ip a ein, etwa so:

vagrant@vagrant-debian-squeeze64:~$ ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 16436 qdisc noqueue state UNKNOWN
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
link/ether 08:00:27:03:32:cb brd ff:ff:ff:ff:ff:ff
inet 10.0.2.15/24 brd 10.0.2.255 scope global eth0
inet6 fe80::a00:27ff:fe03:32cb/64 scope link
valid_lft forever preferred_lft forever
3: eth1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
link/ether 08:00:27:56:7c:ba brd ff:ff:ff:ff:ff:ff
inet 172.28.128.5/24 brd 172.28.128.255 scope global eth1
inet6 fe80::a00:27ff:fe56:7cba/64 scope link
valid_lft forever preferred_lft forever

Ermitteln Sie die Adresse der virtuellen Maschine im reinen Host-Netzwerk. Sie können dies überprüfen, indem Sie sich per SSH mit dem Benutzer vagrant und dem Passwort vagrant mit der Adresse verbinden.

Besuchen Sie Ihr neu installiertes Jenkins

Wir haben jetzt eine VM laufen, aber wir können Jenkins noch nicht sehen. Standardmäßig werden die installierten Dienste nach der Installation nicht gestartet (damit wird sichergestellt, dass jedes Puppet-Modul über genügend Speicherplatz verfügt, um installiert zu werden, wenn Sie eine beliebige Anzahl von Modulen kombinieren). Starten Sie den Rechner neu, um die Installation abzuschließen: vagrant ssh sudo reboot Danach sollten Sie eine voll funktionsfähige Jenkins-Installation haben, die Sie möglicherweise über die in der Ausgabe erwähnte URL aufrufen: https://172.28.128.5:8080/

Projektspezifische Einstellungen

Jetzt kommt der Teil, in dem Sie projektspezifische Einstellungen hinzufügen müssen. All die Dinge, die Sie am Ende nie mehr als dreimal machen müssen. Bevor Sie das tun, öffnen Sie SSH für die virtuelle Maschine und fahren Sie sie herunter: vagrant ssh sudo poweroff öffnen Sie dann die Virtualbox-Verwaltungs-GUI und klonen Sie den Rechner. Dadurch erhalten Sie einen normalen Virtualbox-Rechner, auf dem Sie all die Dinge tun können, die Sie wahrscheinlich für jedes einzelne Projekt tun möchten:

  • Besondere Benutzer hinzufügen
  • Hinzufügen eines Schlüssels für die Entwicklung zum Lesen eines Git-Repos
  • Installieren Sie Ihre eigene spezielle Art von Java und Maven
  • Konfigurieren Sie die Hostnamen, die Sie verwenden möchten
  • usw.

Sie können sich immer mit dem Benutzernamen vagrant und dem Passwort vagrant anmelden. Jede Root-Aktivität sollte mit sudo eingeleitet werden, ohne dass Sie ein Passwort benötigen (oder verwenden Sie sudo su - um eine Root-Konsole zu starten).Sobald Sie fertig sind, können Sie die VM als OVA-Image exportieren, so dass Sie sie auf einen anderen Host verschieben oder in Ihre lokale Entwicklungs-Cloud importieren können. Viel Spaß beim Hacken und vergessen Sie nicht, einen Blick auf die verfügbaren Module zu werfen und Ihre eigenen hinzuzufügen!

Verfasst von

Bram Neijt

Contact

Let’s discuss how we can support your journey.