Zum Inhalt springen

Development

Eine OS X Mountain Lion Base Box in VMware Fusion 5 erstellen

Erfahren Sie, wie Sie mit VMware Fusion 5 eine Vagrant-Base-Box für OS X Mountain Lion erstellen. Diese umfassende Anleitung führt Sie durch den gesamten Prozess von der Einrichtung der VM bis zum Packen und ermöglicht einheitliche Entwicklungsumgebungen für Mac OS X. Ideal für Entwickler, die auf Apples Betriebssystem testen müssen und dabei den komfortablen Workflow von Vagrant nutzen möchten.

6 Min. Lesezeit

Bevor wir beginnen

Einige Hinweise zur Vorsicht, die Sie beachten sollten:

  • Eine virtuelle Maschine mit OS X wird groß. Eine OS X Base Box ist etwa 5,65GB groß. Das übersteigt die von Vagrant im Hinblick auf Portabilität empfohlene Box-Größe. Das lässt sich nicht vermeiden. Behalten Sie das im Hinterkopf und stellen Sie sicher, dass Sie genügend Speicherplatz haben – und Geduld beim Starten von Boxen. Größere Boxen brauchen länger zum Herunterladen und Klonen. Da ich dies für Entwicklungs- und Administrationszwecke mache, sind die Startzeiten für reproduzierbare Tests akzeptabel. Um die Downloadzeiten zu verkürzen, können Sie die Box auf einem lokalen HTTP-Server in Ihrem Netzwerk statt in der Cloud bereitstellen, das ist aber optional.
  • Ihre Vagrant-Version MUSS 1.3.0 oder höher sein. Vor 1.3.0 gab es keine Unterstützung für OS X ohne Workarounds und Hacks.

Plausibilitätsprüfung

Dieser Artikel wurde mit folgender Umgebung getestet:

  • Apple OS X Mountain Lion (Host & Gast)
  • VMware Fusion 5.0.3
  • Vagrant 1.3.5
  • Vagrant-Plugin vagrant-vmware-fusion 2.0.8

Hinweis: Für OS X Mavericks als Host & Gast gelten dieselben Schritte, allerdings ist mindestens VMware Fusion 6.x erforderlich.

Eine virtuelle OS-X-Maschine in VMware Fusion erstellen

Erstellen Sie in VMware Fusion eine neue virtuelle Maschine.

Falls Sie noch nie eine OS-X-VM in VMware Fusion erstellt haben, hinterlassen Sie gern einen Wunsch nach einem Tutorial. Ansonsten gehe ich vorerst davon aus, dass Sie wissen, wie das geht. Folgendes sollten Sie beim Erstellen der virtuellen Maschine in VMware Fusion beachten:

  • Ändern Sie beim Speichern der VM den Dateinamen in mountain64-1_vmware.vmwarevm.
  • Ändern Sie die Festplatteneinstellungen der virtuellen Maschine so, dass die Festplatte nicht in 2GB-Dateien aufgeteilt wird.
  • Beim ersten Systemstart werden die Felder für den ersten Benutzer – Full Name, Username und Password – jeweils mit vagrant ausgefüllt.

Das Gastbetriebssystem konfigurieren

Sofern nicht anders angegeben, werden alle Schritte im Gastbetriebssystem ausgeführt.

VMware Tools installieren

Als ersten Schritt installieren wir die VMware Tools, um Kopieren und Einfügen zwischen Host und Gast zu ermöglichen.

Auf dem Host bei ausgewähltem VMware Fusion:

  1. Wählen Sie in der Apple-Menüleiste Virtual Machine > Update VMware Tools… Der Menüpunkt kann auch Install VMware Tools, Reinstall VMware Tools oder Update VMware Tools heißen.
  2. Klicken Sie im daraufhin geöffneten Dialog auf Install.

Auf dem Gast:

  1. Sobald das Disk-Image eingebunden ist, doppelklicken Sie auf das Paket Install Vmware Tools.
  2. Folgen Sie den Standardabfragen, bis die Installation abgeschlossen ist. Beachten Sie, dass Sie während der Installation nach dem Administratorpasswort gefragt werden.
  3. Starten Sie nach Abschluss der Installation neu.
  4. Melden Sie sich erneut an, wenn Sie dazu aufgefordert werden.

Für den Rest dieses Artikels können Sie nun bei Bedarf Befehle zwischen Host und Gast kopieren und einfügen.

Das Betriebssystem aktualisieren

Um die Anzahl der Updates zu verringern, die bei jedem Start der Box nötig sind, führen Sie die Softwareaktualisierung aus.

  1. Öffnen Sie das Terminal und führen Sie Folgendes aus:
$ sudo softwareupdate --install --all
  1. Warten Sie, bis die Updates abgeschlossen sind. Starten Sie neu. Wiederholen Sie dies nach Bedarf bzw. bis keine weiteren Updates mehr verfügbar sind.

Die Firewall in OS X deaktivieren

In OS X ist die Firewall standardmäßig deaktiviert. Stellen Sie sicher, dass dies der Fall ist, indem Sie Ihre Einstellungen unter Security & Privacy überprüfen.

  1. Navigieren Sie zu System Preferences > Security & Privacy.
  2. Wählen Sie den Tab Firewall.
  3. Stellen Sie sicher, dass die Firewall ausgeschaltet (Off) ist.

In diesem Artikel geht es nicht um die Sicherheit einer Box, daher sollte die Firewall der Einfachheit halber ausgeschaltet sein. Wenn Sie strengere Anforderungen haben, können Sie nach Belieben mit den Firewall Options… experimentieren.

Remote Login aktivieren

Damit Vagrant sich per SSH mit einer OS X Box verbinden kann, müssen wir lediglich Remote Login aktivieren.

  1. Navigieren Sie zu System Preferences > Sharing.
  2. Aktivieren Sie Remote Login, um es einzuschalten.
  3. Optional: Passen Sie die Zugriffsrechte bei Bedarf an. Standardmäßig ist All Users ausgewählt. Wenn Sie diese Option auf Only these users: ändern, fügen Sie den von Ihnen angelegten Benutzer vagrant hinzu.

Vagrants unsicheren Schlüssel herunterladen

Unser Benutzer vagrant verwendet einen SSH-Schlüssel, um autorisierten Zugriff auf die Box zu erhalten.

$ mkdir -p /Users/vagrant/.ssh
$ chmod 0700 /Users/vagrant/.ssh
$ curl -o /Users/vagrant/.ssh/authorized_keys --url https://raw.github.com/mitchellh/vagrant/master/keys/vagrant.pub
$ chmod 0600 /Users/vagrant/.ssh/authorized_keys
$ chown -R vagrant /Users/vagrant/.ssh

sudo ohne Passwort einrichten

Der Benutzer vagrant benötigt sudo-Rechte ohne Passwort. Führen Sie dazu Folgendes im Terminal aus:

$ sudo visudo

Fügen Sie die folgenden Zeilen hinzu bzw. ändern Sie sie bei Bedarf:

Defaults env_keep += 'SSH_AUTH_SOCK'
Defaults:vagrant !requiretty

# Add the vagrant user at the end of the file
vagrant ALL=NOPASSWD: ALL

Speichern und beenden.

Den Gast optimieren

Würden wir uns jetzt die Größe unserer VMware-Datei ansehen, läge sie bei etwa 16,26GB (laufend) bzw. 14,11GB (heruntergefahren). Die VM jetzt herunterzufahren und zu verkleinern, würde kaum etwas bringen: Die Größe der VM würde nur um 0,02GB sinken.

Wenn wir jedoch den freien Speicherplatz auf der Gastfestplatte mit Nullen überschreiben und sie anschließend verkleinern, können wir die VM auf etwa 7,48GB reduzieren.

  1. Öffnen Sie ein Terminal und geben Sie Folgendes ein:
$ diskutil secureErase freespace 0 Macintosh HD
$ sudo halt

Die Box fertigstellen

Ab hier findet alles auf dem Host statt.

  1. Öffnen Sie ein Terminal und wechseln Sie in das Verzeichnis, in dem die virtuelle Maschine gespeichert wurde. In der Regel ist das ~/Documents/Virtual Machines/.
  2. Wechseln Sie in die .vmwarevm-Datei Ihrer virtuellen Maschine.

Eine metadata.json erstellen

  • Führen Sie Folgendes im Terminal aus:
$ vi metadata.json
  • Geben Sie folgenden Inhalt in Ihren Editor ein:
{ "provider": "vmware_fusion" }
  • Speichern Sie die Datei.
  • Beenden Sie Ihren Editor.

Die virtuelle Maschine verkleinern

  1. Öffnen Sie das Terminal und geben Sie Folgendes ein:
$ /Applications/VMware Fusion.app/Contents/Library/vmware-vdiskmanager -k
  1. Geben Sie ein Leerzeichen und den Pfad zur virtuellen Festplattendatei Ihrer VM ein.
  2. Drücken Sie die Eingabetaste.

Dadurch sollte die virtuelle Festplatte auf etwa 7,48GB verkleinert worden sein.

Die virtuelle Maschine packen

Das Packen der virtuellen Maschine mit tar und gzip verringert die Box-Größe. Danach sollte die VM etwa 5,63GB groß sein.

  1. Führen Sie Folgendes im Terminal aus:
$ tar -cvzf mountain64-1_vmware.box ./*

Sobald die Komprimierung abgeschlossen ist, verschieben Sie die .box-Datei in ein passenderes Arbeitsverzeichnis für Ihr Projekt oder auf einen Webserver. In diesem Beispiel verwenden wir ~/workspace/vagrant-example. Dieser Ordner existiert auf Ihrem System vermutlich noch nicht – legen Sie ihn also natürlich an, bevor Sie die Datei dorthin verschieben.

Die Vagrant OS X Base Box starten

Wechseln Sie im Terminal in unseren Projekt-Workspace ~/workspace/vagrant-example. Führen Sie Folgendes aus:

$ vagrant box add mountain64 mountain64-1_vmware.box
$ vagrant init mountain64 mountain64-1_vmware.box

Wenn wir die virtuelle Maschine jetzt im Headless-Modus ausführen möchten, genügt:

$ vagrant up --provider=vmware_fusion

Soll sie dagegen im GUI-Modus laufen, passen Sie das generierte Vagrantfile in unserem Projekt-Workspace an. Fügen Sie folgende Zeilen hinzu:

Vagrant.configure(VAGRANTFILE_API_VERSION) do |config|

  config.vm.provider :vmware_fusion do |v|
     v.gui = true
  end

  # Existing Vagrantfile generated template...

Führen Sie anschließend Folgendes aus:

$ vagrant up --provider=vmware_fusion

War alles erfolgreich, sehen Sie im Terminal folgende Ausgabe:

Bringing machine 'default' up with 'vmware_fusion' provider...
[default] Cloning VMware VM: 'mountain64'. This can take some time...
[default] Verifying vmnet devices are healthy...
[default] Preparing network adapters...
[default] Fixed port collision for 22 => 2222. Now on port 2200.
[default] Starting the VMware VM...
[default] Waiting for the VM to finish booting...
[default] The machine is booted and ready!
[default] Forwarding ports...
[default] -- 22 => 2200
[default] Configuring network adapters within the VM...
[default] Enabling and configuring shared folders...
[default] -- /Users/username/workspace/vagrant-example: /vagrant
Teilen