Awesome Open Source
Awesome Open Source

Vagrant setup for OSX

Vagrant environment for testing and experiments inside OSX running via VMWare.

Prerequisites

  1. Download a fresh copy of OSX installer from AppStore.
  2. Create a Vagrant OSX box via timsutton/osx-vm-templates
  • Use --only=vmware-iso to only use VMWare builder
  • Increase the disk size (default is 20480 MB) as installing large packages from Homebrew and elsewhere may take up 20GB pretty quickly
  • Remove Parallels and Chef scripts as we won't need these
  1. Place the result box in the root of this repo as mac-osx-10-10-vmware.box
  2. Install Homebrew (which implies having XCode CLI Tools installed)
  3. Install Brewcask brew install caskroom/cask/brew-cask
  4. Install other tools: brew install --cask vagrant vmware-fusion
  5. Install Vagrant VMWare plugin: vagrant plugin install vagrant-vmware-fusion and add license vagrant plugin license vagrant-vmware-fusion license.lic

Caveats

Boxen & synced folders

Boxen uses file-locking to ensure it's only running once. This doesn't work with the default VMWare file-sync mechanism.

This is why we use NFS, but that has a different caveat - each time you run vagrant [up|reload], Vagrant will try to modify /etc/exports on your host machine, which will by default require your sudo password.

A workaround could be allowing write for all admins on that system & restarting nfsd without password:

# This is due to pesky sed - see https://github.com/mitchellh/vagrant/pull/5259
sudo chown root:admin /etc
sudo chmod g+w /etc

sudo chown root:admin /etc/exports
sudo chmod g+w /etc/exports

echo "%admin ALL=(root) NOPASSWD: /sbin/nfsd" >> /etc/sudoers

while having Vagrant 1.7.0+ installed.

Testing environments

Just pure OSX

Just a pure OSX with no extra mountpoints/provisioners, works out of the box.

vagrant up base

Boxen

Expects ./our-boxen directory in the root, Vagrant will mount it & install accordingly.

Available ENV variables:

  • GH_TOKEN - Github token for Boxen
  • UNLOCK_BOXEN (empty or 1) - whether to unlock boxen (sometimes necessary when you kill the instance in mid-flight)
  • NO_PULL (empty or 1) - whether to pull down latest version of mounted our-boxen or not
vagrant up boxen

Dotfiles

TODO

Homebrew (Cask)

This will install latest Homebrew + Brewcask, turn Brewcask into DEV mode and mount any directories named as homebrew-* as taps into the VM.

vagrant up brew

Usage

vagrant ssh brew
brew install vagrant/homebrew-mytap/package-name

Get A Weekly Email With Trending Projects For These Topics
No Spam. Unsubscribe easily at any time.
shell (10,553
osx (333
vagrant (154
vmware (46