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.

[Quicktip] Virtualbox / Vagrant funktioniert nach OSX Mavericks Update nicht mehr

Du hast Mavericks installiert und nun spinnt deine Virtualbox Installation und somit auch Vagrant? Eine Neu-Installation bringt auch keine Lösung, denn nach einem Neustart tritt der Fehler wieder auf? Dann ist das hier die Lösung:

Lad dir die neueste Virtual Box Version herunter, öffne das DMG und führe zunächst das Uninstall Script aus, welches sich darin befindet. Erst dann installierst du Virtual Box neu. Anschließend funktioniert Virtual Box auch nach einem Neustart.

Der Fehler wird scheinbar durch die virtuallen Netzwerkkarten für das Host Only Netzwerk verursacht.

[Quicktip] Vagrant zeigt plötzlich Config-Fehler beim Hochfahren einer VM

Beispiel:

"Vagrantfile:4:in `forward_port': wrong number of arguments (2 for 3) (ArgumentError)"

In solchen Fällen hat man evtl. vergessen, sein System zu updaten. Ein einfaches Update von Vagrant hatte das Problem bei mir sehr schnell gelöst:

gem update vagrant