Wie baue ich eine Vagrant Box mit OSX Yosemite?

Vagrant ist aus dem heutigen Entwickler Alltag nicht mehr weg zu denken. Wird es hauptsächlich für Linux Distributionen verwendet, so ist es doch auch mal ganz reizvoll, eine Box mit einem OSX drin zu betreiben – sprich, Mac OSX Yosemite zu virtualisieren. Und das geht so:

Zieht euch das Repository: https://github.com/box-cutter/osx-vm

Anschließend ladet ihr euch über den App-Store den OSX Yosemite Installer herunter – aktuell ist in diesem OSX Yosemite 10.10.1 enthalten. Wenn der Download abgeschlossen ist, ruft ihr folgendes im ausgecheckten osx-vm Order auf:

mkdir dmg
prepare_iso/prepare_iso.sh /Applications/Install\ OS\ X\ Yosemite.app ./dmg

Anschließend wird das im Installer enthaltene ISO zu einem beschreibbaren DMG umgewandelt und ein paar Patches angewendet. Wenn das Script durchgelaufen ist, dann könnt ihr mittels (xcode Command Line Tools vorausgesetzt)

make virtualbox/osx1010-desktop

die Vagrant Instanz für eine Yosemite Desktop Variante in Virtual Box bauen lassen. Das “virtualbox” kann man durch “vmware” ersetzen, und wenn man das “-desktop” weg lässt, dann bekommt man eine Consolen Variante von OSX.

Ihr werdet hier einen Fehler erhalten, dass der Installer das DMG nicht finden kann. In meinem Fall sollte die Datei “OSX_InstallESD_10.10_14A389.dmg“ heißen. Also benennt ihr einfach die vorhandene DMG Datei im Ordner DMG in den euch angezeigten Namen um. Anschließen führt ihr den oberen Befehl erneut durch und wartet einfach ab. Ihr werdet zuerst ein paar mal die Shell sehen, bis sich dann irgendwann der Yosemite Installer öffnet und das System automatisch installiert.

1416523902_thumb.png

Es wird automatisch der User Vagrant erzeugt, der das Passwort “vagrant” hat. Loggt euch aber nicht direkt ein, sobald die Login Maske erscheint, sondern beobachtet eure Console. Dort werdet ihr sehen, dass Vagrant erstmal die neuesten Updates einspielt und Software installiert. Also erstmal machen lassen 😉

Und ehe man sich versieht, hat man ein OSX in der Virtual Box am laufen:

Bildschirmfoto 2014-11-21 um 00.10.37
Wichtig: brecht auf keinen Fall den Installer ab! Wenn ihr das Script vorzeitig beendet, dann wird die komplette Box gelöscht. Dass ihr die GUI seht ist erstmal etwas verwirrend – letztlich wird die Box nur vorbereit, um dann nach Abschluss aller Installationen als „echte“ Vagrant Box hinterlegt zu werden. Diese Box wiederrum könnt ihr dann als Vagrant Box verwenden, um verschiedene Instanzen davon laufen zu lassen.

Die erstellte Box wird ca. 6GB groß sein.

Host-only Netzwerk Adapter mit Virtualbox

Für ein aktuelles Projekt habe ich etwas mehr mit Virtualisierung zu tun – mit Virtualbox. Wer Virtualbox nicht kennt: Dabei handelt es sich um eine eine Open Source Virtualisierungssoftware, die mittlerweile von Oracle gesponsert wird. Das Tool kann alle gängigen virtuellen Festplatten lesen, und so kann man auch VM-Ware Images übernehmen – man muss eben nur die virtuelle Maschine neu konfigurieren.

Aber zurück zum Thema: In Virtualbox kann man, wie auch in VMWare, verschiedene Netzwerkadapter einsetzen. So gibt es NAT, interne Netzwerke, Host-Only Netzwerke usw.

Unter Virtualbox sind Host-Only und interne Netzwerke fast das gleiche. Der einzige Unterschied ist, dass bei Host-Only auch das Host System per IP erreichbar ist, beim internen Netzwerk aber nur die virtuellen Maschinen miteinander kommunizieren können.

Das Problem ist: will man einen Host-Only Adapter einrichten, sieht man folgendes (zumindest unter Mac):

Wie man an der unteren Fehlermeldung erkennen kann, stimmt etwas nicht. Leider ist Virtualbox nicht so intuitiv und weist darauf hin, was zu tun ist. Im Handbuch wird die Lösung ganz beifällig genannt: man muss ein Host-Only Netzwerk einrichten. Dazu geht man in die Einstellungen, dann auf Netzwerk und klickt da auf den grünen hinzufügen Button:

Anschließend auf den Schraubenzieher klicken und die Adresse in “IPv4 Adresse” kopieren. Dann auf den Tab “DHCP-Server” klicken und den Haken bei “Server aktivieren” setzen. Bei “Server-Adresse” die eben kopierte IP wieder einfügen. Bei Netzmaske “255.255.255.0” eintragen. Bei “Kleinste Adresse” und “Größte Adresse” tragt ihr eine IP Range für die bereitzustellenden IPs ein.

Wenn man nun wieder die Adapter-Einstellungen der virtuellen Maschine aufruft, passt der Dialog wieder:

Wenn man nun mit ok bestätigt, kann man die virtuelle Maschine wieder hochfahren. Der Host-Only Adapter erhält seine IP per DHCP.

Tutorial: ESXi Server mit der HP Z400 Workstation

Heute gibt es mal einen Gastbeitrag von einem meiner Auszubildenden zum Thema VMware ESXi Server. Der ESXi ist die kostenlose Variante des ESX Servers, der für die Servervirtualisation eingesetzt wird. Dabei wird kein Betriebssystem als Unterbau benötigt, da der ESX direkt in eine kleine Linux-Umgebung integriert ist. Das bringt zum einen extreme zusätzliche Performance, zum anderen auch eine geringere Bug-Anfälligkeit des Host-Systems. Patrick hatte bei der Einrichtung einige Probleme, da die Treiber für die Netzwerkkarte seiner Workstation nicht richtig erkannt wurden. Doch lest selbst:

Ich habe mich in der letzten Woche, aufgrund meiner Ausbildungsstelle, mit dem ESXi Server auseinandergesetzt.
Ziel war es, den Server auf einer HP Z400 Workstation zum Laufen zu bringen. VMware stellt hierfür eine kostenlose
ISO-Datei auf ihrem Webserver bereit.

Mit dem gebrannten ISO-Image im CD-Laufwerk traten auch schon die ersten Probleme auf:
Zum einen wird der Netzwerkadapter (NIC) vom ESXi Server nicht unterstützt, zum anderen lädt der ESXi standartmäßig SCSI Festplatten-Treiber. Da in der HP Z400 in der derzeitigen Konfiguration nur SATA Platten verwendet werden (bisher nur eine, später wird ein RAID folgen), musste ich mich durch verschiedenste Foren und Lösungsvorschläge kämpfen.

Letztendlich konnten beide Probleme folgendermaßen gelöst werden:

Ich habe mir eine Ubuntu Live-CD erstellt und diese auf der Workstation starten lassen,
mir das ‘mkesxiaio’ Bash-Script runtergeladen und in den Ordner ‘/Downloads/tmp/’ kopiert. In den gleichen Ordner kamen jeweils noch die ISO-Datei des ESXi 4.1 Servers und eine, aus dem vm-help.com Forum,
modifizierte, oem.tgz.

Im Anschluss startete ich das Terminal und wechselte in den Ordner ‘/Downloads/tmp/’,
um das Script mit ‘sudo chmod +x mkesxiaio_3.x.x.sh’ ausführbar zu machen
und per ‘sudo ./mkesxiaio_3.x.x.sh’ auszuführen.

Das Script frägt dann auch gleich, welche ESXi Version man benutzt. In diesem Fall wählte ich die ‘3’ für die Version 4.1.

Nachdem überprüft wurde, ob die benötigte Linux Tools in der Distribution vorhanden sind, konnte ich auswählen,
in welcher Form (modifiziertes ISO-Image, Installation auf den USB laden, Server auf den USB installieren) das Image ausgegeben werden soll. Ich wählte “Server auf USB-Stick installieren”.

Als die Frage, ob die init.d editiert werden soll, erschien, wählte ich “ja” und fügte folgendes am Ende der Datei ein:
vmkload_mod tg3.o
vmkload_mod lvmdriver

Dadurch werden bei jedem Boot-Vorgang die fehlenden Netzwerktreiber nachgeladen.

Nachdem der Stick erstellt war, konnte ich von selbigem Booten und den ESXi einrichten.