Skip to content

Instantly share code, notes, and snippets.

Show Gist options
  • Save swateek/3b8be7d1a041e7ff3e7ebfa13e41e8c5 to your computer and use it in GitHub Desktop.
Save swateek/3b8be7d1a041e7ff3e7ebfa13e41e8c5 to your computer and use it in GitHub Desktop.
Vagrant and VMWare Tech Preview on Apple M1 Pro

Vagrant and VMWare Tech Preview on Apple M1 Pro

This document summarizes notes taken while to make the VMWare Tech preview work on Apple M1 Pro, it originated from discussions in hashicorp/vagrant-vmware-desktop#22

Installing Rosetta

First install Rosetta if not already done, this is needed to run x86 code:

/usr/sbin/softwareupdate --install-rosetta --agree-to-license

Installing Vagrant

Install Vagrant via brew or install it manually. Note that I use 2.2.18 as 2.2.19 did not work for me. (YMMV)

brew install [email protected]

Installing VMWare Fusion Tech Preview

You will need to create an account on vmware as it needs user and key information that are user specific. The registration process is kinda convoluted. Be careful about passwords as the password needs to be less than 20 characters and there are no error messages for this.

You can download the tech preview via the download page.

Once this is installed you will NEED to create a symlink as the vagrant vmware utility etc.. assumes that vmware is installed in a specific directory and the tech preview is installed in a different one.

ln -s /Applications/VMWare\ Fusion\ Tech\ Preview.app /Applications/VMWare\ Fusion.app

Installing Vagrant VMWare provider

It requires two steps. This is detailed in the documentation but follow the steps below:

First go to Vagrant vmware Utility and download the binary and install it. It says x86_64 but it is fine.

The direct link is:

https://releases.hashicorp.com/vagrant-vmware-utility/1.0.21/vagrant-vmware-utility_1.0.21_x86_64.dmg

It needs to be version 1.0.21

Next install the provider:

vagrant plugin install vagrant-vmware-desktop

Create a Vagrant file

Create a file Vagrantfile

Vagrant.configure("2") do |config|
  config.vm.box = "spox/ubuntu-arm"
  config.vm.box_version = "1.0.0"
end

Run vagrant

vagrant up

and then

vagrant ssh

Hopefully this should work and you should find yourself with mostly everything working.

Troubleshooting

I have observed various issues that makes the whole experience unstable or creating conflicts.

vagrant 2.2.19 is broken

I have had issues trying to run vagrant 2.2.19. Use 2.2.18

vagrant-vmware provider forwarded ports bound

If you declare forwarding port on your box, for some reasons the provider persists them and keeps it bound in LISTEN state even after you do a vagrant halt.

You can check this using something like:

sudo lsof -i -P | grep LISTEN | grep 'vagrant-v'

You can see the ports are stored in:

cat /opt/vagrant-vmware-desktop/settings/portforwarding.json

To stop the provider use:

sudo launchctl unload -w /Library/LaunchDaemons/com.vagrant.vagrant-vmware-utility.plist

To start it again, use load instead of unload.

nfs exports conflicts

If your vagrant box uses nfs, it seems to pollute the /etc/exports file with duplicate or stale entries over time which will cause vagrant to get angry at you at some point. You may need to prune the entries. It seems related to vagrant#11418

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment