Vagrant environment for testing and experiments inside OSX running via VMWare.
- Download a fresh copy of OSX installer from AppStore.
- 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
- Place the result box in the root of this repo as
mac-osx-10-10-vmware.box
- Install Homebrew (which implies having XCode CLI Tools installed)
- Install Brewcask
brew install caskroom/cask/brew-cask
- Install other tools:
brew install --cask vagrant vmware-fusion
- Install Vagrant VMWare plugin:
vagrant plugin install vagrant-vmware-fusion
and add licensevagrant plugin license vagrant-vmware-fusion license.lic
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.
Just a pure OSX with no extra mountpoints/provisioners, works out of the box.
vagrant up base
Expects ./our-boxen
directory in the root, Vagrant will mount it & install accordingly.
Available ENV variables:
GH_TOKEN
- Github token for BoxenUNLOCK_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 mountedour-boxen
or not
vagrant up boxen
TODO
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
vagrant ssh brew
brew install vagrant/homebrew-mytap/package-name