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-isoto only use VMWare builder - Increase the disk size (default is
20480MB) 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-fusionand 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 baseExpects ./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-boxenor not
vagrant up boxenTODO
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 brewvagrant ssh brew
brew install vagrant/homebrew-mytap/package-name